模糊查询Like的疑惑

一枚小菜 2013-01-16 10:22:50
select 1 from
tb where ',%1,2,3,4%,' like ',%1%,'

',%1,2,3,4%,' like ',%1%,' 这个是True

select 1 from
tb where ',%1%,' like ',%1,2,3,4%,'
',%1,2,3,4%,' like ',%1%,' 这个是False


感觉like前后的两个字符串顺序调换,都能说得通。
但是后一种写法测试时False,不理解,请高手指教!
...全文
350 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vidor 2013-01-18
  • 打赏
  • 举报
回复
like是一个模式匹配概念,属于正则匹配范畴,模式里面的%代表任意数量的任何字符,这都能搞错? select 1 where ',%1,2,3,4%,' like ',%1%,' 意思就是字符串',%1,2,3,4%,'的特征是:逗号(,)开头、任意数量的任何字符(%)、1、任意数量的任何字符(%),逗号(,)结束。 select 1 where ',%1%,' like ',%1,2,3,4%,' 反过来你看看字符串',%1%,'的符不符合模式',%1,2,3,4%,'描述的特征?
發糞塗牆 2013-01-17
  • 打赏
  • 举报
回复
可以按你这样认为。我大学年年重修.....
一枚小菜 2013-01-17
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
来举个特例:',%1%,',它可能是',1asbadsf,'这种格式, ',%1,2,3,4%,',它可能是',abcdsfer1,2,3,4,' 上面那个是匹配不了下面那个的。
应该说',%1,2,3,4%,'是',%1%,',的子集,也就是',%1%,',包含',%1,2,3,4%,' 因此',%1,2,3,4%,'必然匹配',%1%,' 你之前说的',%1,2,3,4%,' like ',%1%,'约等于',%1,2,3,4%,' 包含有 ',%1%,',正好说反了吧?
發糞塗牆 2013-01-17
  • 打赏
  • 举报
回复
来举个特例:',%1%,',它可能是',1asbadsf,'这种格式, ',%1,2,3,4%,',它可能是',abcdsfer1,2,3,4,' 上面那个是匹配不了下面那个的。
一枚小菜 2013-01-17
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
',%1,2,3,4%,' like ',%1%,'约等于',%1,2,3,4%,' 包含有 ',%1%,',你反过来说得通吗?
',%1%,'代表以,开头和结尾,中间含有1的 ',%1,2,3,4%,'表示以,开头和结尾,中间含有1,2,3,4 的, 表面上看中间含有1,2,3,4,那么必然含有1了,因此后者包含前者 但是前者的限制条件,应该包含的范围广吧,比如含有1的电话号码,和含有1234的电话号码那个代表的范围广,应该是含有1的吧? 能不能从sql的本质上解释一下,具体的数学原理。
我腫了 2013-01-17
  • 打赏
  • 举报
回复
他想問這兩個有什麽區別(第一個where為false,第二個where為true):
select 1 where  
',%1%,' like ',%1,2,3,4%,'

/*(0 個資料列受到影響)*/

select 1 where  
',%1,2,3,4%,' like ',%1%,'

/*(1 個資料列受到影響)*/
xjq2003 2013-01-17
  • 打赏
  • 举报
回复
select 1 from tb where ',%1,2,3,4%,' like ',%1%,' ',%1,2,3,4%,' like ',%1%,' 这个是True select 1 from tb where ',%1%,' like ',%1,2,3,4%,' ',%1,2,3,4%,' like ',%1%,' 这个是False 如果这么多条件 你总要有个or 或者 and 吧 要不你什么意思都不知道啊
中国风 2013-01-16
  • 打赏
  • 举报
回复
通常是这样用
declare @IDs varchar(1000)
set @IDs='1,2,3,4'

select * from tb where ','+@IDs+',' like '%,'+rtrim(ID)+',%'
發糞塗牆 2013-01-16
  • 打赏
  • 举报
回复
',%1,2,3,4%,' like ',%1%,'约等于',%1,2,3,4%,' 包含有 ',%1%,',你反过来说得通吗?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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