新闻中心

sql怎样用LIKE进行简单的模糊查询 sql模糊查询的基础语句用法

2025-08-16
浏览次数:
返回列表

sql中模糊查询主要依赖like操作符配合通配符%(代表任意长度的任意字符)和\_(代表单个任意字符),用于实现非精确匹配;2. 常见用法包括:'张%'查找以“张”开头的字符串,'%三'查找以“三”结尾的字符串,'%限量版%'查找包含“限量版”的字符串,'\_小\_'查找三个字且中间为“小”的字符串;3. 模糊匹配在用户搜索、数据清洗、报告统计和异常识别中至关重要,能应对输入不规范或数据变体问题;4. 通配符%可匹配零到多个字符,适用于模糊和包含场景,而\_仅匹配一个字符,适用于固定长度或特定位置的精确匹配;5. not like用于排除符合特定模式的记录,常用于排除测试数据、识别格式异常(如邮箱、电话号码)、筛选不包含关键词的内容以及结合escape排除含通配符字面值的数据,提升了数据过滤的灵活性。

sql怎样用LIKE进行简单的模糊查询 sql模糊查询的基础语句用法

SQL中,要进行简单的模糊查询,我们主要依赖

LIKE
操作符。它的核心在于通过模式匹配来筛选字符串数据,而不是进行精确的比对。这就像你在一个杂乱的文档堆里找东西,不记得确切的名字,只记得几个关键词或开头结尾,
LIKE
就是帮你做这件事的工具。它主要配合两个通配符使用:百分号(
%
)代表任意长度(包括零个)的任意字符序列,而下划线(
_
)则代表一个且仅一个任意字符。

SQL模糊查询的基础语句用法,说白了,就是把

LIKE
操作符放到
WHERE
子句后面,然后跟上你想要匹配的模式字符串。这个模式字符串里,通配符就是我们的魔法棒。

最常见的几种用法:

  1. 查找以特定字符开头的记录:如果你想找所有名字以“张”开头的用户,你可以这么写:

    SELECT *
    FROM Users
    WHERE UserName LIKE '张%';

    这里

    '张%'
    的意思是“以‘张’字开头,后面跟着任意数量的任意字符”。

  2. 查找以特定字符结尾的记录:要是你只记得某个名字的最后一个字是“三”,那可以这样:

    SELECT *
    FROM Products
    WHERE ProductName LIKE '%三';

    '%三'
    表示“前面可以是任意数量的任意字符,但必须以‘三’字结尾”。

  3. 查找包含特定字符序列的记录:这是最常用的,比如你想找所有描述里包含“限量版”的产品:

    SELECT *
    FROM Descriptions
    WHERE ProductDescription LIKE '%限量版%';

    '%限量版%'
    意味着“无论前面有什么,后面有什么,只要中间包含‘限量版’就行”。

  4. 查找特定位置的字符:有时候我们对长度有要求,或者知道某个位置的字符是什么。比如,我想找所有名字是三个字,且中间那个字是“小”的:

    SELECT *
    FROM Employees
    WHERE EmployeeName LIKE '_小_';

    '_小_'
    表示“第一个字符是任意一个字符,第二个字符是‘小’,第三个字符是任意一个字符”。这在处理一些固定格式的编码或者特定长度的字段时特别有用。

理解了这几个基础模式,基本上就能应付日常大部分的模糊查询需求了。

为什么在数据查询中模糊匹配如此重要?它能解决哪些实际问题?

在我看来,模糊匹配在数据查询中简直是不可或缺的。想想看,我们的数据世界从来都不是完美无缺的,用户输入可能五花八门,数据录入也难免有疏漏。如果只有精确匹配,那很多时候我们根本就找不到想要的信息。

它能解决的实际问题太多了:

AletheaAI AletheaAI

世界上第一个从自然语言描述中生成交互式 AI 角色的多模态 AI 系统。

AletheaAI 83 查看详情 AletheaAI
  • 用户搜索体验:当用户在电商网站搜索“手机壳”时,他可能输入“手机壳”、“手机保护套”、“手机套”,甚至“IPHONE壳”。如果只支持精确匹配,那用户体验会非常糟糕。模糊查询能让系统理解用户的意图,即使输入不完全精确也能返回相关结果。
  • 数据清洗与分析:我在处理一些历史数据时,经常遇到“张三”、“张叁”、“张三丰”这样的情况。如果想找出所有“张三”相关的人,精确匹配肯定不行。利用
    LIKE '张三%'
    或者
    LIKE '%张三%'
    ,就能把这些变体都找出来,方便后续的清洗和统一。
  • 报告与统计:需要统计所有“销售部”或“市场部”的员工,但部门名称可能写成“销售部(北京)”、“销售一部”、“市场部-华南区”等。一个
    LIKE '%销售部%' OR LIKE '%市场部%'
    就能轻松搞定。
  • 识别异常或模式:比如,你想找出所有邮箱地址不符合常规格式(比如没有
    @
    符号)的用户,或者所有电话号码不是11位的记录。模糊查询配合
    NOT LIKE
    就能派上用场。

可以说,模糊匹配是让数据“活”起来的关键,它让查询变得更加灵活和智能,适应了现实世界中数据固有的不确定性。

LIKE
操作符中的通配符
%
_
,它们在实际使用中有何异同?

%
_
这两个通配符,虽然都是用来做模式匹配的,但它们的“权力”和“范围”是截然不同的,理解它们的不同,能让你写出更精确、更符合需求的查询语句。

百分号(

%

  • 含义:代表零个、一个或多个任意字符。它的特点是“贪婪”且“灵活”。
  • 何时用
    • 当你只知道字符串的开头或结尾,想匹配所有可能性时(如
      'ABC%'
      '%XYZ'
      )。
    • 当你只知道字符串中包含某个子串,而对子串前后的内容长度不确定时(如
      '%KEYWORD%'
      )。
    • 你甚至可以只用一个
      '%'
      来匹配所有非NULL的字符串,虽然这没什么实际意义,但说明了它的“全能性”。
  • 例子
    • LIKE '王%'
      :能匹配“王”、“王小明”、“王大锤”。
    • LIKE '%手机'
      :能匹配“华为手机”、“我的手机”。
    • LIKE '%苹果%'
      :能匹配“苹果手机”、“我爱吃苹果派”。

下划线(

_

  • 含义:代表一个且仅一个任意字符。它的特点是“精准”且“固定”。
  • 何时用
    • 当你对字符串的长度有严格要求,或者你知道某个位置的字符是任意的,但其他位置是固定的时。
    • 在处理一些编码、序列号或者固定格式的短文本时非常有用。
  • 例子
    • LIKE '张__'
      :只匹配三个字的,且第一个字是“张”的名字,如“张三丰”、“张小明”,但不会匹配“张”或“张大炮”。
    • LIKE 'A_C'
      :只匹配三个字符,开头是A,结尾是C的,如“ABC”、“ADC”、“A9C”。
    • LIKE '_____'
      :匹配任意五个字符的字符串。

异同总结

  • 相同点:都是用于
    LIKE
    操作符的通配符,都匹配任意字符。
  • 不同点
    • %
      匹配零到多个字符,
      _
      匹配一个字符。这是最核心的区别。
    • %
      更适合“模糊”和“包含”的场景,
      _
      更适合“固定长度”和“特定位置”的场景。

实际使用中,我通常会根据对匹配精度的要求来选择。如果只是想看看有没有包含某个词,

%
是首选;如果我知道某个字段是固定格式,比如产品编码是
XXX-YYY-ZZZ
,而我只记得
XXX
ZZZ
,那
LIKE 'XXX-%-ZZZ'
可能就更合适,或者如果我知道中间是3个字符,
LIKE 'XXX-___-ZZZ'
则更精确。

NOT LIKE
的用途是什么?何时会用到它?

NOT LIKE
,顾名思义,就是
LIKE
的反面,它用于查找那些不符合指定模式的字符串。这在数据过滤、异常数据识别或者排除特定类型信息时,简直是神来之笔。

我个人在以下几种场景中经常用到

NOT LIKE

  1. 排除特定类型的记录

    • 比如,我想查看所有产品中,除了“测试”或“演示”用的产品以外的真实商品数据。
      SELECT *
      FROM Products
      WHERE ProductName NOT LIKE '%测试%' AND ProductName NOT LIKE '%演示%';
    • 或者,我想列出所有部门,但不想看到“临时部门”或“已撤销部门”:
      SELECT *
      FROM Departments
      WHERE DeptName NOT LIKE '%临时%' AND DeptName NOT LIKE '%撤销%';
  2. 数据质量检查与异常识别

    • 这是
      NOT LIKE
      非常实用的一个地方。比如,我想找出所有邮箱地址格式不规范(比如没有
      @
      符号,或者没有
      .com
      等后缀)的用户,以便进行数据清洗。
      SELECT UserID, Email
      FROM Users
      WHERE Email NOT LIKE '%@%' OR Email NOT LIKE '%.%'; -- 简单示例,实际邮箱校验更复杂
    • 再比如,我想找出所有电话号码不是以“1”开头的记录,这可能意味着数据录入错误。
      SELECT CustomerID, PhoneNumber
      FROM Customers
      WHERE PhoneNumber NOT LIKE '1%';
  3. 筛选不包含特定关键词的内容

    • 在内容管理系统中,你可能想找出所有文章中,不包含某个敏感词或已过时术语的。
      SELECT ArticleID, Title
      FROM Articles
      WHERE Content NOT LIKE '%敏感词%' AND Content NOT LIKE '%过时术语%';
  4. 处理包含通配符本身的数据

    • 如果你的数据中本身就包含
      %
      _
      字符,而你想把它们作为字面值来匹配,就需要用到
      ESCAPE
      子句。但如果你想排除那些包含这些字面值的记录,
      NOT LIKE
      就配合
      ESCAPE
      一起用。例如,查找不包含字面值
      50%
      的字符串:
      SELECT ItemCode
      FROM Inventory
      WHERE ItemCode NOT LIKE '%50\%%' ESCAPE '\';

      这里

      \
      是转义字符,告诉SQL
      %
      不是通配符,而是要匹配的字面值。

总的来说,

NOT LIKE
LIKE
的有力补充,它让我们可以从“找什么”转变为“排除什么”,在数据筛选和质量控制上提供了极大的灵活性。

以上就是sql怎样用LIKE进行简单的模糊查询 sql模糊查询的基础语句用法的详细内容,更多请关注其它相关文章!


# 就能  # 网站优化售后什么意思  # 宣城网络推广营销多少钱  # 壁画网站建设  # 天门网站推广优化公司  # ai智能推广开哪种营销场景  # 江门网站建设推广哪家好  # 果园采摘推广营销案例  # 天津技术网站建设销售  # 惠州专业建设网站  # 网站推广费用app  # 有什么  # 都是  # 不包含  # 多个  # sql使用方法  # 这是  # 想找  # 限量版  # 我想  # 关键词  # 为什么  # yy  # 区别  # 邮箱  # ai  # 苹果手机  # 苹果  # 工具  # iphone 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Python多线程中正确使用sigwait处理SIGALRM信号  css链接悬停下划线样式如何自定义_使用::after结合content和transition  如何使用Go和Martini动态服务解码后的图片  整合Supabase认证与Django模型:跨模式迁移的解决方案  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  利用Bokeh CustomJS动态控制DataTable列可见性  AO3访问入口汇总 AO3网页版同人作品一键直达  MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法  在WordPress中通过REST API获取BasicAuth保护的远程文章  Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  韩剧圈正版入口页面_韩剧圈官网登录链接  composer的"require-dev"部分是用来做什么的?  4399免费游戏网址入口 4399小游戏免费入口点开即玩  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  Go语言中JSON数据解码与字段访问指南  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  蛙漫移动版在线看 蛙漫手机浏览器直达入口  PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】  Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  c++ 命名空间怎么用 c++ namespace使用指南  如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南  win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】  百度网盘网页版入口 百度网盘网页版官方登录网址  如何使用Node.js csv 包按条件移除含空字段的CSV记录  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  响应式图片在网页设计中的正确实现方法  一加 14R 快充无反应_一加 14R 充电优化  Win11网速慢怎么解决 Win11网络设置优化解除限速  铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则  c++如何实现单例设计模式_c++线程安全的单例模式写法  Kafka Streams中基于消息头条件过滤消息的实现指南  QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录  腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法  响应式容器内容自动缩放与宽高比维持教程  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择  12306选座如何查看座位示意图_12306座位示意图解读与使用  《噬血代码2》新预告片发布 展示游戏剧情  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】 

搜索