SQL:是否可以将data_type传递给变量中的函数? (功能转换)

问题描述 投票:0回答:1

我想在引用变量来设置data_type时调用SQL CONVERT函数。

例如:

CONVERT(nvarchar(10), column1, 120)

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

CONVERT(@myDataType, column1, 120)

现在@myDataType可能是nvarchar(10),nvarchar(7),Int,但我无法弄清楚使它起作用的语法。

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

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

大小可以是整数。这似乎也不起作用。

这些可能吗?

sql sql-server sqldatatypes
1个回答
0
投票

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

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

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

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

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

实际上,nvarchar(max)有点过分约会了。诸如32255的值应足够。

© www.soinside.com 2019 - 2024. All rights reserved.