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

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

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

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

LIKE

操作符。它的核心在于通过模式匹配来筛选字符串数据,而不是进行精确的比对。这就像你在一个杂乱的文档堆里找东西,不记得确切的名字,只记得几个关键词或开头结尾,

LIKE

就是帮你做这件事的工具。它主要配合两个通配符使用:百分号(

%

)代表任意长度(包括零个)的任意字符序列,而下划线(

_

)则代表一个且仅一个任意字符。

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

LIKE

操作符放到

WHERE

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

最常见的几种用法:

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

SELECT *FROM UsersWHERE UserName LIKE '张%';

这里

'张%'

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

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

SELECT *FROM ProductsWHERE ProductName LIKE '%三';

'%三'

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

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

SELECT *FROM DescriptionsWHERE ProductDescription LIKE '%限量版%';

'%限量版%'

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

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

SELECT *FROM EmployeesWHERE EmployeeName LIKE '_小_';

'_小_'

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

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

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

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

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

TextCortex TextCortex

AI写作能手,在几秒钟内创建内容。

TextCortex 62 查看详情 TextCortex 用户搜索体验:当用户在电商网站搜索“手机壳”时,他可能输入“手机壳”、“手机保护套”、“手机套”,甚至“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

排除特定类型的记录

比如,我想查看所有产品中,除了“测试”或“演示”用的产品以外的真实商品数据。

SELECT *FROM ProductsWHERE ProductName NOT LIKE '%测试%' AND ProductName NOT LIKE '%演示%';

或者,我想列出所有部门,但不想看到“临时部门”或“已撤销部门”:

SELECT *FROM DepartmentsWHERE DeptName NOT LIKE '%临时%' AND DeptName NOT LIKE '%撤销%';

数据质量检查与异常识别

这是

NOT LIKE

非常实用的一个地方。比如,我想找出所有邮箱地址格式不规范(比如没有

@

符号,或者没有

.com

等后缀)的用户,以便进行数据清洗。

SELECT UserID, EmailFROM UsersWHERE Email NOT LIKE '%@%' OR Email NOT LIKE '%.%'; -- 简单示例,实际邮箱校验更复杂

再比如,我想找出所有电话号码不是以“1”开头的记录,这可能意味着数据录入错误。

SELECT CustomerID, PhoneNumberFROM CustomersWHERE PhoneNumber NOT LIKE '1%';

筛选不包含特定关键词的内容

在内容管理系统中,你可能想找出所有文章中,不包含某个敏感词或已过时术语的。

SELECT ArticleID, TitleFROM ArticlesWHERE Content NOT LIKE '%敏感词%' AND Content NOT LIKE '%过时术语%';

处理包含通配符本身的数据

如果你的数据中本身就包含

%

_

字符,而你想把它们作为字面值来匹配,就需要用到

ESCAPE

子句。但如果你想排除那些包含这些字面值的记录,

NOT LIKE

就配合

ESCAPE

一起用。例如,查找不包含字面值

50%

的字符串:

SELECT ItemCodeFROM InventoryWHERE ItemCode NOT LIKE '%50\%%' ESCAPE '\';

这里

\

是转义字符,告诉SQL

%

不是通配符,而是要匹配的字面值。

总的来说,

NOT LIKE

LIKE

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/967339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月1日 19:39:52
下一篇 2025年12月1日 19:40:56

相关推荐

  • CSS mask属性无法获取图片:为什么我的图片不见了?

    CSS mask属性无法获取图片 在使用CSS mask属性时,可能会遇到无法获取指定照片的情况。这个问题通常表现为: 网络面板中没有请求图片:尽管CSS代码中指定了图片地址,但网络面板中却找不到图片的请求记录。 问题原因: 此问题的可能原因是浏览器的兼容性问题。某些较旧版本的浏览器可能不支持CSS…

    2025年12月24日
    900
  • Uniapp 中如何不拉伸不裁剪地展示图片?

    灵活展示图片:如何不拉伸不裁剪 在界面设计中,常常需要以原尺寸展示用户上传的图片。本文将介绍一种在 uniapp 框架中实现该功能的简单方法。 对于不同尺寸的图片,可以采用以下处理方式: 极端宽高比:撑满屏幕宽度或高度,再等比缩放居中。非极端宽高比:居中显示,若能撑满则撑满。 然而,如果需要不拉伸不…

    2025年12月24日
    400
  • PC端H5项目如何实现适配:流式布局、响应式设计和两套样式?

    PC端的适配方案及PC与H5兼顾的实现方案探讨 在开发H5项目时,常用的屏幕适配方案是postcss-pxtorem或postcss-px-to-viewport,通常基于iPhone 6标准作为设计稿。但对于PC端网项目,处理不同屏幕大小需要其他方案。 PC端屏幕适配方案 PC端屏幕适配一般采用流…

    2025年12月24日
    300
  • 如何让小说网站控制台显示乱码,同时网页内容正常显示?

    如何在不影响用户界面的情况下实现控制台乱码? 当在小说网站上下载小说时,大家可能会遇到一个问题:网站上的文本在网页内正常显示,但是在控制台中却是乱码。如何实现此类操作,从而在不影响用户界面(UI)的情况下保持控制台乱码呢? 答案在于使用自定义字体。网站可以通过在服务器端配置自定义字体,并通过在客户端…

    2025年12月24日
    800
  • 如何在地图上轻松创建气泡信息框?

    地图上气泡信息框的巧妙生成 地图上气泡信息框是一种常用的交互功能,它简便易用,能够为用户提供额外信息。本文将探讨如何借助地图库的功能轻松创建这一功能。 利用地图库的原生功能 大多数地图库,如高德地图,都提供了现成的信息窗体和右键菜单功能。这些功能可以通过以下途径实现: 高德地图 JS API 参考文…

    2025年12月24日
    400
  • 如何使用 scroll-behavior 属性实现元素scrollLeft变化时的平滑动画?

    如何实现元素scrollleft变化时的平滑动画效果? 在许多网页应用中,滚动容器的水平滚动条(scrollleft)需要频繁使用。为了让滚动动作更加自然,你希望给scrollleft的变化添加动画效果。 解决方案:scroll-behavior 属性 要实现scrollleft变化时的平滑动画效果…

    2025年12月24日
    000
  • 如何为滚动元素添加平滑过渡,使滚动条滑动时更自然流畅?

    给滚动元素平滑过渡 如何在滚动条属性(scrollleft)发生改变时为元素添加平滑的过渡效果? 解决方案:scroll-behavior 属性 为滚动容器设置 scroll-behavior 属性可以实现平滑滚动。 html 代码: click the button to slide right!…

    2025年12月24日
    500
  • 为什么设置 `overflow: hidden` 会导致 `inline-block` 元素错位?

    overflow 导致 inline-block 元素错位解析 当多个 inline-block 元素并列排列时,可能会出现错位显示的问题。这通常是由于其中一个元素设置了 overflow 属性引起的。 问题现象 在不设置 overflow 属性时,元素按预期显示在同一水平线上: 不设置 overf…

    2025年12月24日 好文分享
    400
  • 网页使用本地字体:为什么 CSS 代码中明明指定了“荆南麦圆体”,页面却仍然显示“微软雅黑”?

    网页中使用本地字体 本文将解答如何将本地安装字体应用到网页中,避免使用 src 属性直接引入字体文件。 问题: 想要在网页上使用已安装的“荆南麦圆体”字体,但 css 代码中将其置于第一位的“font-family”属性,页面仍显示“微软雅黑”字体。 立即学习“前端免费学习笔记(深入)”; 答案: …

    2025年12月24日
    000
  • 如何选择元素个数不固定的指定类名子元素?

    灵活选择元素个数不固定的指定类名子元素 在网页布局中,有时需要选择特定类名的子元素,但这些元素的数量并不固定。例如,下面这段 html 代码中,activebar 和 item 元素的数量均不固定: *n *n 如果需要选择第一个 item元素,可以使用 css 选择器 :nth-child()。该…

    2025年12月24日
    200
  • 使用 SVG 如何实现自定义宽度、间距和半径的虚线边框?

    使用 svg 实现自定义虚线边框 如何实现一个具有自定义宽度、间距和半径的虚线边框是一个常见的前端开发问题。传统的解决方案通常涉及使用 border-image 引入切片图片,但是这种方法存在引入外部资源、性能低下的缺点。 为了避免上述问题,可以使用 svg(可缩放矢量图形)来创建纯代码实现。一种方…

    2025年12月24日
    100
  • 如何让“元素跟随文本高度,而不是撑高父容器?

    如何让 元素跟随文本高度,而不是撑高父容器 在页面布局中,经常遇到父容器高度被子元素撑开的问题。在图例所示的案例中,父容器被较高的图片撑开,而文本的高度没有被考虑。本问答将提供纯css解决方案,让图片跟随文本高度,确保父容器的高度不会被图片影响。 解决方法 为了解决这个问题,需要将图片从文档流中脱离…

    2025年12月24日
    000
  • 为什么我的特定 DIV 在 Edge 浏览器中无法显示?

    特定 DIV 无法显示:用户代理样式表的困扰 当你在 Edge 浏览器中打开项目中的某个 div 时,却发现它无法正常显示,仔细检查样式后,发现是由用户代理样式表中的 display none 引起的。但你疑问的是,为什么会出现这样的样式表,而且只针对特定的 div? 背后的原因 用户代理样式表是由…

    2025年12月24日
    200
  • inline-block元素错位了,是为什么?

    inline-block元素错位背后的原因 inline-block元素是一种特殊类型的块级元素,它可以与其他元素行内排列。但是,在某些情况下,inline-block元素可能会出现错位显示的问题。 错位的原因 当inline-block元素设置了overflow:hidden属性时,它会影响元素的…

    2025年12月24日
    000
  • 为什么 CSS mask 属性未请求指定图片?

    解决 css mask 属性未请求图片的问题 在使用 css mask 属性时,指定了图片地址,但网络面板显示未请求获取该图片,这可能是由于浏览器兼容性问题造成的。 问题 如下代码所示: 立即学习“前端免费学习笔记(深入)”; icon [data-icon=”cloud”] { –icon-cl…

    2025年12月24日
    200
  • 为什么使用 inline-block 元素时会错位?

    inline-block 元素错位成因剖析 在使用 inline-block 元素时,可能会遇到它们错位显示的问题。如代码 demo 所示,当设置了 overflow 属性时,a 标签就会错位下沉,而未设置时却不会。 问题根源: overflow:hidden 属性影响了 inline-block …

    2025年12月24日
    000
  • 如何利用 CSS 选中激活标签并影响相邻元素的样式?

    如何利用 css 选中激活标签并影响相邻元素? 为了实现激活标签影响相邻元素的样式需求,可以通过 :has 选择器来实现。以下是如何具体操作: 对于激活标签相邻后的元素,可以在 css 中使用以下代码进行设置: li:has(+li.active) { border-radius: 0 0 10px…

    2025年12月24日
    100
  • 为什么我的 CSS 元素放大效果无法正常生效?

    css 设置元素放大效果的疑问解答 原提问者在尝试给元素添加 10em 字体大小和过渡效果后,未能在进入页面时看到放大效果。探究发现,原提问者将 CSS 代码直接写在页面中,导致放大效果无法触发。 解决办法如下: 将 CSS 样式写在一个单独的文件中,并使用 标签引入该样式文件。这个操作与原提问者观…

    2025年12月24日
    000
  • 如何模拟Windows 10 设置界面中的鼠标悬浮放大效果?

    win10设置界面的鼠标移动显示周边的样式(探照灯效果)的实现方式 在windows设置界面的鼠标悬浮效果中,光标周围会显示一个放大区域。在前端开发中,可以通过多种方式实现类似的效果。 使用css 使用css的transform和box-shadow属性。通过将transform: scale(1.…

    2025年12月24日
    200
  • 为什么我的 em 和 transition 设置后元素没有放大?

    元素设置 em 和 transition 后不放大 一个 youtube 视频中展示了设置 em 和 transition 的元素在页面加载后会放大,但同样的代码在提问者电脑上没有达到预期效果。 可能原因: 问题在于 css 代码的位置。在视频中,css 被放置在单独的文件中并通过 link 标签引…

    2025年12月24日
    100

发表回复

登录后才能评论
关注微信