sql - 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
. 这似乎也不起作用。
这些都可能吗?
解决方案
不,你不能这样做。参数仅代表文字(即“常量”)值。它们不代表标识符、关键字、运算符和语言的其他组件。
在存储过程中,您可以使用动态 SQL 解决此问题。
但是,SQL Server 不支持(以任何简单合理的方式)函数调用中的动态 SQL。
我建议您只需转换为nvarchar(max)
然后使用left()
:
LEFT(CONVERT(nvarchar(max), column1, 120), @mysize)
实际上,nvarchar(max)
约会有点矫枉过正。一个值如32
or255
应该是足够的。
推荐阅读
- mongodb - 如何将 Mongo docker 容器连接到主机上安装的 mongodb compass 社区
- c++ - 如何在 c++11 中使用 vscode-clangd?
- excel - 如果 C 列中存在 B 列值,则将 B 列中字符串的字体更改为粗体
- bash - bash:find 无法搜索带空格的文件夹名称
- android - 使用画布和可绘制将edittext放在中间
- php - 在 laravel 中显示来自 API 请求的错误
- node.js - 上传视频到服务器
- axon - Axon 框架仅对某些命令实现 IntervalRetryScheduler
- angular - 有没有办法在 Angular 7 中从一页到另一页执行功能?
- swift - FileHandler 输出的更多缓冲区?