在SQL Server中,LEFT()是否将nvarchar转换为int



我有一堆字母数字代码存储为Nvarchar。我想取所有以1开头的代码,并将.00001附加到它们的末尾。我试过这个代码

,CASE 
WHEN left(1,[CASE_CODE]) = '1'
THEN concat([CASE_CODE],'.00001')
ELSE [CASE_CODE]
END as [CASE_CODE]

但是我收到这个错误信息

消息245,级别16,状态1,第2行将nvarchar值"PVC00595"转换为数据类型int时转换失败。

LEFT函数是否由于某种原因而转换为int?

根据文档,left采用一个字符表达式,后跟一个整数表达式。您的错误来自left(1,[CASE_CODE])试图将CASE_CODE转换为整数表达式(因为它是第二个参数(。

您需要left([CASE_CODE], 1)(反向参数(。

最新更新