2

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

CAST('11' AS 'int') 

但不是

CAST('11' AS int)
4

3 回答 3

6

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

于 2013-08-08T12:12:04.390 回答
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

于 2013-08-08T12:20:51.753 回答
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

于 2013-08-08T12:21:37.887 回答