怎样用一条语句根据不同字符串来模糊查询

ALEX_1111 2016-11-26 02:38:15
表A:
aa bb
中国 4578124736
美国 3761892
英国 78452341
法国 651247774
德国 7421661489
意大利 618993124
西班牙 12544466178
葡萄牙 22140514618

为了方便理解,bb字段用数字替代了字符串,问题其实很简单,找出bb字段中含有“124”或者“618“的数据,用最简单的SQL语句

...全文
553 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Klera 2016-12-05
  • 打赏
  • 举报
回复
你把这些字段放到单独一个表中,写一个动态拼接字符串的语句就OK了 哈哈
tcmakebest 2016-11-27
  • 打赏
  • 举报
回复
直接说自己懒就好了, 几十个or就是难看了点,想好看那代码更复杂.
卖水果的net 2016-11-26
  • 打赏
  • 举报
回复
-- 把多个条件,存到一个临时表中吧,用这个形式
with m as (
select '124'  c 
union all
select '618'
)
select * from t 
where exists(select * from m where t.bb like '%' + c + '%')
中国风 2016-11-26
  • 打赏
  • 举报
回复
引用 6 楼 ALEX_1111 的回复:
难道就真的没有简单一点的写法类似于in这样的
你这是模糊不能用IN,只能全文检索时支持这样的格式,效率高,条件为字符串为数字时需要删除干扰词
WHERE CONTAINS(Name, ' 条件1 OR 条件2 ')
ALEX_1111 2016-11-26
  • 打赏
  • 举报
回复
难道就真的没有简单一点的写法类似于in这样的
中国风 2016-11-26
  • 打赏
  • 举报
回复
#3这样的方法不可取,效率低 要实现数据量大最好用全文检索去实现,或用动态语句去处理,或用拆分的方式 可参照: http://bbs.csdn.net/topics/392052139
ALEX_1111 2016-11-26
  • 打赏
  • 举报
回复
-- 可以这样写,但是可读性不如多个 or ,效率也不 or where bb != replace(replace(bb,'124',''),'618','') 这个应该是个and的意思了吧?同时含有124和618的字段值才起作用吧?
卖水果的net 2016-11-26
  • 打赏
  • 举报
回复
引用 2 楼 ALEX_1111 的回复:
就是不想用or才发帖的,实际的需求有几十个字符串,难道写几十个or子句?
-- 可以这样写,但是可读性不如多个 or ,效率也不 or 
where bb != replace(replace(bb,'124',''),'618','')
ALEX_1111 2016-11-26
  • 打赏
  • 举报
回复
就是不想用or才发帖的,实际的需求有几十个字符串,难道写几十个or子句?
中国风 2016-11-26
  • 打赏
  • 举报
回复
e.g.
SELECT * FROM Table1 WHERE bb LIKE '%124%' OR bb LIKE '%618%'

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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