V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
AmoxiDu
V2EX  ›  程序员

SQL Server 单字段多值模糊查询

  •  
  •   AmoxiDu · 2020-01-14 16:58:56 +08:00 via Android · 2780 次点击
    这是一个创建于 1804 天前的主题,其中的信息可能已经有所发展或是发生改变。

    求教 v 友:

    对表 T 的字段 a 进行模糊查询,模糊值不少于 1000 个,除了用 or 拼接,有没有其他优雅的写法

    5 条回复    2020-01-16 09:05:52 +08:00
    799635347
        1
    799635347  
       2020-01-14 19:13:12 +08:00
    union
    a87965028
        2
    a87965028  
       2020-01-14 23:03:28 +08:00
    或许可以再建一张表维护这茫茫多个模糊值,然后与表 T join ?
    yjhatfdu2
        3
    yjhatfdu2  
       2020-01-15 11:33:23 +08:00
    应该可以 select t.a,t2.p from t,(values('%a%'),('%b%'),('%c%')) as t2(p) where t.a like t2.p;
    中间 values 表达式可以任意多个,pg、sqlserver 支持类似写法,oracle 和 mysql 不支持
    yjhatfdu2
        4
    yjhatfdu2  
       2020-01-15 11:35:26 +08:00
    当然如果是 pg 的话可以更简单这样写,select a from t where a like any(array['%a%','%b%','%e%']); sqlserver 就不知道了
    mmdsun
        5
    mmdsun  
       2020-01-16 09:05:52 +08:00 via Android
    SQLServer 支持全文检索和分词。就别用 like 了吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2667 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:13 · PVG 23:13 · LAX 07:13 · JFK 10:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.