这样的查询怎样写????? 困惑ing...................... 表 user 中有一个字段 rID 它里面存储的值为如下格式:5,3,10,11,6,1,32或单个数字现在要判断数 1 是否在 rID 中,怎么写sql语句?(注意:不能是10或11 ,而是 1 ) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select * from user where charindex(','+1+',',','+rid+',')>0 select * from user where charindex(','+cast(1 as varchar)+',',','+rid+',')>0 --第一种方法:用动态SQL语句declare @s varchar(1000),@值列表 varchar(1000)set @值列表= '''aa'',''bb'',''cc'''set @s='select * from 表名 where 字段 in (' + @值列表 + ')'print @sexec (@s)--第二种方法:使用charindexdeclare @值列表 varchar(1000)set @值列表='aa,bb,cc'select * from 表名 where charindex(',' + 字段 + ',',',' + @值列表 + ',') > 0----------------------------------------------------------------------------动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg: declare @fname varchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fname varchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输出参数 declare @num int, @sqls nvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from tableName ' exec sp_executesql @sqls,N'@a int output',@num output select @num select * from [user] where charindex(','+rID+',',',5,3,10,11,6,1,32,')>0 反了,改一下:select * from [user] where charindex(',1,',','+rID+',')>0 设置默认值后,创建sql脚本的问题 不太明白 "自动生成测试数据存储过程" 是做什么用的? SQL2005 同步 SQL2000 !200分 企業管理器中的 sql server logs 是什麼日志,是怎麼看的. 对我来说是个超难的sql语句,有兴趣的朋友帮我看看,谢谢! SQL语句:只显示合条件的记录中的一条记录 在SQL里怎样存放图片字段?怎样存入图片??? 如何删除有大量数据表中的重复数据,保留一条 一百分求救,在ASP中如何调用SQL过程,参数如何传递? [讨论] 起草命名规则 与 规范 简单排序 关于两个表的统计,SQL语句如何写?
declare @s varchar(1000),@值列表 varchar(1000)
set @值列表= '''aa'',''bb'',''cc'''
set @s='select * from 表名 where 字段 in (' + @值列表 + ')'
print @s
exec (@s)
--第二种方法:使用charindex
declare @值列表 varchar(1000)
set @值列表='aa,bb,cc'
select * from 表名 where charindex(',' + 字段 + ',',',' + @值列表 + ',') > 0--------------------------------------------------------------------------
--动态sql语句基本语法
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中? declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
select * from [user] where charindex(','+rID+',',',5,3,10,11,6,1,32,')>0