declare @ctring varchar(8000)
set @ctring = '1,2,3,4,5,6,7' /* 实际应用中,这里的 @ctring 是参数传递过来的,所以并非固定的这些ID号 */
if exists(select * from book where id in (@ctring) and 类别 = '英语')
begin
-- 这里有很多语句要执行
end
else
begin
-- 这里有很多语句要执行
end
上面的:
if exists(select * from book where id in (@ctring) and 类别 = '英语')
总是提示语法错误,麻烦帮我改改好吗谢谢!!
set @ctring = '1,2,3,4,5,6,7' /* 实际应用中,这里的 @ctring 是参数传递过来的,所以并非固定的这些ID号 */
if exists(select * from book where id in (@ctring) and 类别 = '英语')
begin
-- 这里有很多语句要执行
end
else
begin
-- 这里有很多语句要执行
end
上面的:
if exists(select * from book where id in (@ctring) and 类别 = '英语')
总是提示语法错误,麻烦帮我改改好吗谢谢!!
charindex(','+rtrim(id)+',' ,','+@ctring+',' )>0
and 类别 = '英语'
and 类别 = '英语'
set @ctring = '1,2,3,4,5,6,7' /* 实际应用中,这里的 @ctring 是参数传递过来的,所以并非固定的这些ID号 */
if exists(select * from sysobjects where charindex(convert(varchar(10),id),@ctring) > 0 )
begin
print '1'
end
else
begin
print '2'
end
给你一个例子
如果 @ctring是 = '11,12,13,14,15,16,17'
那么exists()得到的结果并非是期望的结果,可以这样来测试:
declare @ctring varchar(8000)
set @ctring = '11,12,13,14,15,16,17'
select * from sysobjects where charindex(convert(varchar(10),id),@ctring) > 0 order by id请查看显示结果,会出现ID为1和11的都会出来,晕哦,请问怎么办???
declare @ctring varchar(8000)
set @ctring = '1,2,3,4,5,6,7' /* 实际应用中,这里的 @ctring 是参数传递过来的,所以并非固定的这些ID号 */
declare @sql varchar(8000)
set @sql='if exists(select 1 from book where id in ('+@ctring+') and 类别 = ''英语'')'
set @sql= @sql + '
begin
print 1
end
else
begin
print 2
end
'
--print @sql
exec(@sql)
另建议:写 exists的时候,不要写if exists (select * ...)
写成 if exists (select color=#00FF00]*[/color] ...)
写成 if exists (select color=[#00FF00]*[/color] ...)