比如:
if exists(select * from students where id in ( 'XD-102 ', 'XD-103 ', 'X-105 '))
print '满足条件 '
else
print '不满足条件 '
上面的if条件中的id值如果来自变量,该如何写???
我尝试这样写但提示语法错误:
declare @list varchar(8000),@sql varchar(8000)
set @list = ' ' 'XD-102 ' ', ' 'XD-103 ' ', ' 'X-105 ' ' '
set @sql = 'if exists(select * from students where id in ( '[email protected]+ ')) '
if exec(@sql)
print '满足条件 '
else
print '不满足条件 '
------解决方案--------------------
--改用CharIndex就可以不用動態SQL語句
declare @list varchar(8000),@sql varchar(8000)
set @list = 'XD-102,XD-103,X-105 '
if exists(select * from students where CharIndex(id, @list) > 0)
print '满足条件 '
else
print '不满足条件 '
------解决方案--------------------
declare @list varchar(8000),@sql varchar(8000)
set @list = ' ' 'XD-102 ' ', ' 'XD-103 ' ', ' 'X-105 ' ' '
set @sql = 'select * from students where id in ( '[email protected]+ ') '
if exists(exec(@sql))
print '满足条件 '
else
print '不满足条件 '
------解决方案--------------------
declare @list varchar(8000),@sql varchar(8000),@count int
set @list = ' ' 'XD-102 ' ', ' 'XD-103 ' ', ' 'X-105 ' ' '
set @sql = 'select * from students where id in ( '[email protected]+ ') '
exec sp_executesql @sql
set @count=@@rowcount
if(@count> 0)
print '满足条件 '
else
print '不满足条件 '
------解决方案--------------------
declare @list varchar(8000),@sql varchar(8000)
set @list = ' ' 'XD-102 ' ', ' 'XD-103 ' ', ' 'X-105 ' ' '
set @sql = 'select * from students where id in ( '[email protected]+ ') '
if @@ROWCOUNT> 0
print '满足条件 '
else
print '不满足条件 '
------解决方案--------------------
在跟踪器里跟踪下,就可以看到为什么不能用in了
------解决方案--------------------
declare @list varchar(8000)
set @list = ' ' 'XD-102 ' ', ' 'XD-103 ' ', ' 'X-105 ' ' '
if exists(select 1 from student where charindex( ', '+id+ ', ', ', '[email protected]+ ', ')> 0)
print '满足条件 '
else
print '不满足条件 '