首页 > 解决方案 > SQL:是否可以将 data_type 传递给变量中的函数?(功能转换)

问题描述

我希望SQL CONVERT在引用变量来设置data_type.

例如:

CONVERT(nvarchar(10), column1, 120)

但不是指定nvarchar(10)我想引用一个变量:

CONVERT(@myDataType, column1, 120)

现在@myDataType可能是nvarchar(10),nvarchar(7)Int,但我无法弄清楚实现该功能的语法。

或者,我想将大小设置为参数:

CONVERT(nvarchar(@mySize), column1, 120)

大小可以是Int. 这似乎也不起作用。

这些都可能吗?

标签: sqlsql-serversqldatatypes

解决方案


不,你不能这样做。参数仅代表文字(即“常量”)值。它们不代表标识符、关键字、运算符和语言的其他组件。

在存储过程中,您可以使用动态 SQL 解决此问题。

但是,SQL Server 不支持(以任何简单合理的方式)函数调用中的动态 SQL。

我建议您只需转换为nvarchar(max)然后使用left()

LEFT(CONVERT(nvarchar(max), column1, 120), @mysize)

实际上,nvarchar(max)约会有点矫枉过正。一个值如32or255应该是足够的。


推荐阅读