求一条sql语句写法!!!!

cdmsan 2008-01-12 10:37:54
问一下这个sql语句怎么写:
表:table1
ID name cID
1 张三 1,2,5
2 李四 2,3
3 王五 3
如果要查询只要cID值里面有2,5的就显示:
张三,李四
如果查询2,3就显示:
李四,王五
只要cID中包含该值就要显示!
如果要查询cID包含12,13的值就显示无!
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
擒兽 2008-01-13
  • 打赏
  • 举报
回复
写函数可以省去Where的累赘

不写函数需要拼合Where语句,存储过程内用sp_executesql执行拼合执行,如果是程序就用程序拼合

Select * From 表 Where 字段 like '%1%' or 字段 like '%2%' or ....... 这里有多少就拼合多少


如果写SQLServer的函数,你去查一下手册
where语句会变得相对简单 Where 函数(字段,搜索关键字符串)>-1
上面的说明可以发现其实函数就是遍历搜索关键字 在该字段内进行字符检查,如果找到了字符起始位置大于-1

关键字:SQLServer的 CREATE FUNCTION
cdmsan 2008-01-13
  • 打赏
  • 举报
回复
问一下这个sql语句怎么写:
表:table1
ID name cID
1 张三 1,2,5
2 李四 2,3
3 王五 3
如果要查询只要cID值里面有2,5的就显示:
张三,李四
如果查询2,3就显示:
李四,王五 ,张三
只要cID中包含该值就要显示!
如果要查询cID包含12,13,22,55,11的值就显示无!
[cID为nvarchar]
MikeCheers 2008-01-13
  • 打赏
  • 举报
回复
查询2,3应该是都显示才对吧 张三有2啊


Dim StrCid,i
StrCid = "2,5"
Dim ArrCid = StrCid.Split(",")
i = 0
While i < Ubound(ArrCid)
rs.open "SELECT [name] FROM [table1] WHERE "& ArrCid(i) &" IN cID"
IF rs.recordcount > 0 Then
Do
Response.Write(Rs(0) &"<br />")
rs.movenext
While NOT rs.EOF
Else
Response.Write("没有纪录")
End IF
i = i + 1
Wend
zhaoyuehui13245 2008-01-13
  • 打赏
  • 举报
回复
set rs=conn.execute("select name from [table1] where CID in(2,3)")
if not rs.eof then
do while not rs.eof
response.write rs(0)&"<br>"
rs.movenext
loop
else
response.write"没有"
end if
rs.close
OK?
cdmsan 2008-01-13
  • 打赏
  • 举报
回复
like,CharIndex 我都用过了!

还是有错呀,有时CID为2,1,或者2或者22或者1,2等等帮忙写个语句呀,谢谢
yanniu008 2008-01-13
  • 打赏
  • 举报
回复
用LIKE也是可以实现的,但是还有很多的办法的
比如CHARINDEX,SUBSTRING...等等的方法都是可以实现的

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧