【发布时间】:2018-11-13 10:14:52
【问题描述】:
由于 SQL Server 2008 没有 Try_convert 函数,我想实现它以在我的项目中使用。 (不是简单地更新到更新的版本不是一种选择)
问题是:如何将数据类型作为参数传递给我的函数?
或者
更通用:变量需要什么条目类型才能保存数据类型?
基本上我想构建一个这样的函数:
CREATE FUNCTION my_Try_Convert
(
-- Add the parameters for the function here
@value varchar(max),@entrytype type,
@format int = NULL
)
RETURNS typeof(@entrytype)
AS
BEGIN
if @entrytype = typeof(datetime)
if (select ISDATE(@value))=1
return convert(@entrytype,@value,@format)
if @entrytype = typeof(int)
if (select isnumeric(@value))=1
return convert(@entrytype,@value,Null)
END
GO
@entrytypes 类型和 typeOf psyodo 函数需要传递什么?
【问题讨论】:
-
不能像这样在 T-SQL 中完成。 T-SQL 没有可以容纳数据类型的数据类型。
-
这里的另一个问题是像
ISNUMERIC这样的函数不是很好。例如尝试ISNUMERIC('.'),然后尝试CONVERT(int,'.')或CONVERT(decimal(2,1),'.')。请注意,两个转换都失败了,但ISNUMERIC返回 true。 -
你需要创建一个 CLR 函数才能在你的 2008 中工作。
标签: sql-server tsql sql-server-2008