有一个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)) || ', %'
我想强调的是,可能有更好的方法,这取决于你的环境。