You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询过滤数据集中特定词汇的最佳SQL文本过滤函数

在SQL中过滤包含"soccer"条目的最佳方法

要从体育活动数据集中找出包含"soccer"的条目,最通用且高效的方案是使用LIKE操作符——几乎所有SQL数据库都原生支持它。

基础区分大小写匹配

如果你的数据集严格区分大小写,直接用LIKE搭配通配符%(匹配任意长度的字符,包括0个)即可:

SELECT * FROM sports_activities
WHERE activity_column LIKE '%soccer%';

不区分大小写的匹配

如果需要匹配"Soccer"、"SOCCER"这类大小写变体,不同数据库有不同实现方式:

  • PostgreSQL:用原生支持不区分大小写的ILIKE
    SELECT * FROM sports_activities
    WHERE activity_column ILIKE '%soccer%';
    
  • MySQL:通过LOWER()函数统一转换为小写后匹配
    SELECT * FROM sports_activities
    WHERE LOWER(activity_column) LIKE '%soccer%';
    
  • SQL Server:用LOWER()统一转换,或指定不区分大小写的排序规则
    SELECT * FROM sports_activities
    WHERE LOWER(activity_column) LIKE LOWER('%soccer%');
    -- 或者用排序规则实现
    SELECT * FROM sports_activities
    WHERE activity_column LIKE '%soccer%' COLLATE SQL_Latin1_General_CP1_CI_AS;
    

精确单词匹配(避免部分匹配)

如果要排除类似"soccerball"这种包含"soccer"但并非独立单词的条目,可以用正则表达式相关函数:

  • PostgreSQL:使用~*操作符搭配单词边界\m
    SELECT * FROM sports_activities
    WHERE activity_column ~* '\msoccer\m';
    
  • MySQL:用REGEXP_LIKE和单词边界标记[[:<:]]/[[:>:]]
    SELECT * FROM sports_activities
    WHERE REGEXP_LIKE(activity_column, '[[:<:]]soccer[[:>:]]', 'i');
    
  • SQL Server(2017及以上版本):使用REGEXP_MATCHES
    SELECT * FROM sports_activities
    WHERE REGEXP_MATCHES(activity_column, '\bsoccer\b', 'i');
    

总结

  • 仅需简单包含匹配:优先用LIKE(或ILIKE),兼容性最好,在有合适索引(如全文索引)的情况下性能优异。
  • 需要精确单词匹配:再考虑正则表达式函数,灵活性高但语法因数据库而异,性能略逊于LIKE。

内容的提问来源于stack exchange,提问作者TayArianna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:09:55