T-SQL中的CAST和CONVERT

时间:2013-08-08 12:09:26

标签: sql sql-server tsql

是否可以使用字符串数据类型(将数据类型参数作为字符串的方法)进行CAST或CONVERT,如:

CAST('11' AS 'int') 

但不是

CAST('11' AS int)

3 个答案:

答案 0 :(得分:6)

没有。 T-SQL中有很多地方需要它,特别是给它的名字 - 不是字符串,也不是包含名称的变量

答案 1 :(得分:3)

如果你想使用动态sql,这应该可以帮助你入门:

DECLARE @datatype varchar(20)
DECLARE @sql varchar(4000)

SELECT @datatype = 'int'

SELECT @sql = 'PRINT CAST(''11'' AS '+@datatype+')'

exec (@sql)

根据您的确切需要/需要,您应该阅读The Curse and Blessings of Dynamic SQL,尤其是关于sp_executesql的部分

答案 2 :(得分:1)

您必须使用动态SQL来实现:

DECLARE @type VARCHAR(10) = 'int'
DECLARE @value VARCHAR(10) = '11'
DECLARE @sql VARCHAR(MAX)

SET @sql = 'SELECT CAST(' + @value + ' AS ' + @type + ')'

EXEC (@sql)

<强> SQLFiddle DEMO with INT // with datetime