使用SQL IN子句

时间:2015-07-10 19:08:37

标签: sql sql-server

我的查询如下:

declare @aID varchar(max)='1'
declare @pID varchar(max)=' '
SELECT * from Table1 WHERE 
(PId = @PID or @pID='') AND (AID = @aID or @aID = '')

此查询正常。 但是现在,我想使用'IN'条款。

declare @aID varchar(max)='1,2'
SELECT * from Table1 WHERE 
(PId = @PID or @pID='') AND (AID IN (@aID) or @aID = '')

但是这最后一个查询给了我一个错误。

Error : 'Conversion failed when converting the varchar value '1,2' to data type int'

我不想改变我的Table1的设计

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

@vars作为单个“块”插入。确定它实际上是多个单独的逗号分隔值不是数据库的工作。

如果您希望将1,2视为两个值,则必须使用动态sql,例如

query = "SELECT ... IN (" + @var + ")";
exec query;

答案 1 :(得分:0)

您可能希望使用表变量,而不是尝试使用逗号稀释值。

echo 1 > working.txt

如果你真的想保留逗号分隔值,你也可以使用split function

/var/www/laravel/public/js/main.js IN_MODIFY yui-compressor -o /var/www/laravel/public/js/main.min.js /var/www/laravel/public/js/main.js