簡體   English   中英

在T-SQL中將字符串中的int轉換為整數

[英]Convert int in string to integers in T-SQL

我需要將字符串轉換為整數,但出現類型錯誤。

declare @stringinteger nvarchar(255) null;
set @stringinteger='1,2,3,4'

select *
from user
where id in (@stringinteger) 

我得到的錯誤:

將nvarchar值'1,2,3,4'轉換為數據類型int時轉換失敗

您有兩種方法可以處理此問題,即動態SQL和拆分字符串。

對於后者,您可以使用string_split() (在SQL Server 2016中引入)或類似的功能(它們在整個網絡上,谷歌“字符串拆分sql服務器”):

select *
from user
where id in (select cast(value as int) from string_split(@stringinteger, ',')) ;

動態SQL看起來像:

declare @stringinteger nvarchar(255) null;
set @stringinteger = '1,2,3,4';

declare @sql nvarchar(max);
set 'select *
from user
where id in (@stringinteger)';

set @sql = replace(@sql, '@stringinteger', @stringinteger);

exec sp_executesql @sql;

請注意,在SQL Server中,應始終提供字符類型的長度。 如果不加說明,則默認值會因上下文而異-代碼可能無法達到您的期望。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM