如何将具有多个值的varchar强制转换为int



有一个SQL模板,它有一个ids变量:

select file_name 
from hist_payout 
where hist_payout_id in (:ids)

ids是一个varchar,看起来像'3, 17, 2001',我得到的错误是

将数据类型varchar转换为bigint错误

是否有可能将varchar转换为SQL中的int数组?

如果你使用的是最新版本的SQL Server,你可以使用STRING_SPLIT来打破这个@varchar值分开。

试试这个:

DECLARE @input VARCHAR(20) = '3, 17, 2001';
SELECT
CAST(TRIM(value) AS INT)
FROM
STRING_SPLIT(@input, ',')

根据您的数据库和您查询它的方式,可能有更好的方法将值列表传递到查询中。

但是给定您指定的形式和假设标准SQL语法的查询,您可以使用LIKE:

where ', ' || :ids || ', ' like '%, ' || cast(hist_payout_id as varchar(255)) || ', %' 

我想强调的是,可能有更好的方法,这取决于你的环境。

最新更新