MySQL 通配符学习小结

2023-11-20

原文:http://blog.csdn.net/ithomer/article/details/5130386


MySQL 通配符

 

SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。

注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。

 

为了找出以“b”开头的名字:

mysql> SELECT * FROM pet WHERE name LIKE "b%";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
Buffy | Harold | dog | f | 1989-05-13 | NULL |
Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

 

为了找出以“fy”结尾的名字:

mysql> SELECT * FROM pet WHERE name LIKE "%fy";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
Fluffy | Harold | cat | f | 1993-02-04 | NULL |
Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+

 

为了找出包含一个“w”的名字:

mysql> SELECT * FROM pet WHERE name LIKE "%w%";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
Claws | Gwen | cat | m | 1994-03-17 | NULL |
Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+

 

为了找出包含正好5个字符的名字,使用“_”模式字符:

mysql> SELECT * FROM pet WHERE name LIKE "_____";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
Claws | Gwen | cat | m | 1994-03-17 | NULL |
Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。

 

扩展正则表达式的一些字符是:

“.”匹配任何单个的字符。 
一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]” 匹配任何小写字母,而“[0-9]”匹配任何数字。 
“ * ”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。 
正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。 

如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL模式匹配)。 
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。 
为了说明扩展正则表达式如何工作,上面所示的LIKE查询在下面使用REGEXP重写:

 

为了找出以“b”开头的名字,使用“^”匹配名字的开始并且“[bB]”匹配小写或大写的“b”:

mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
Buffy | Harold | dog | f | 1989-05-13 | NULL |
Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

 

为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:

mysql> SELECT * FROM pet WHERE name REGEXP "fy$";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
Fluffy | Harold | cat | f | 1993-02-04 | NULL |
Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+

 

为了找出包含一个“w”的名字,使用“[wW]”匹配小写或大写的“w”:

mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
Claws | Gwen | cat | m | 1994-03-17 | NULL |
Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+

既然如果一个正规表达式出现在值的任何地方,其模式匹配了,就不必再先前的查询中在模式的两方面放置一个通配符以使得它匹配整个值,就像如果你使用了一个SQL模式那样。

 

为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:

mysql> SELECT * FROM pet WHERE name REGEXP "^.....$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
Claws | Gwen | cat | m | 1994-03-17 | NULL |
Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

 

你也可以使用“{n}”“重复n次”操作符重写先前的查询:

mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
Claws | Gwen | cat | m | 1994-03-17 | NULL |
Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

 

http://www.playhosts.com/bbs/read.php?tid=12357

=====================================================================

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 通配符学习小结 的相关文章

  • 为什么 Clojure MySQL 查询结果中出现“M”

    我有一个返回一行的 Clojure 查询 下面是返回行 映射 的部分打印输出 employer percent 0 00M premium 621 44M 这两列在mysql表中分别是decimal 5 2 和decimal 7 2 为什么
  • MySQL 全文搜索之谜

    我们的网站上有一个使用 MySQL 全文搜索的简单搜索 但由于某种原因 它似乎没有返回正确的结果 我不知道这是否是 Amazon RDS 我们的数据库服务器所在的位置 或我们请求的查询的某种问题 这是数据库表的结构 CREATE TABLE
  • 解析错误:语法错误,意外的“”(T_ENCAPSED_AND_WHITESPACE)[重复]

    这个问题在这里已经有答案了 完整错误 解析错误 语法错误 意外的 T ENCAPSED AND WHITESPACE 需要标识符 T STRING 或 变量 T VARIABLE 或数字 T NUM STRING 它说错误出现在第 12 行
  • django - 设置中带有数据库 url 的 MySQL 严格模式

    我在设置中使用数据库 URL 字符串 例如 DATABASES default mysql root localhost 3306 mydb 当我迁移时 我收到此警告 MySQL Strict Mode is not set for dat
  • MySQL 过去 12 个月的月度销售情况,包括没有销售的月份

    SELECT DATE FORMAT date b AS month SUM total price as total FROM cart WHERE date lt NOW and date gt Date add Now interva
  • PHP 数据库显示在具有不同锚标记的相同字段中

    我四处寻找 看看这是否可行 但却空手而归 首先 这是我的代码 div style display none div ul li li li li li li ul
  • 展平具有未知列数的子/父数据

    我正在努力寻找存储和表示 SQL MySQL DB 和 C Windows 表单中的数据的最佳方法 我的数据映射到如下所示的类时 public class Parent public string UniqueID get set Key
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date
  • 从 datagridview 选定的行更新 mysql 数据库

    我有一个 datagridview 它在表单加载事件上加载 mysql 数据库表 t pi clients 并且我有另一个选项卡 其中包含 t pi client 相应列的文本框 它能够从 fullrowselect 模式获取数据到这些文本
  • PHP mysql_num_rows 死错误

    我想创建一个页面 用户可以在其中添加他们的信息 我已经创建了该页面 但我真正的问题是代码 我有一些问题 这部分代码
  • php echo 不工作

    我的代码似乎不起作用 单选按钮出现 但旁边什么也没有 似乎 mysql fetch array 由于某种原因无法工作 因为我已经玩过代码并反复测试它以查找代码似乎遇到的位置出现问题并停止工作 有人可以告诉我出了什么问题吗 欢呼声我是新手 最
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • 是否可以在MYSQL中动态选择列名,其中列名是N个已知值中的1?

    我担心答案会是直接的 不 但我想知道是否可以在 MySQL 中执行如下操作 SELECT title label name FROM table 即选择单个列 可以称为title label or name from table 原因是 查
  • AttributeError:尝试在 python 中运行 sqlalchemy 来管理我的 SQL 数据库时,“Engine”对象没有属性“execute”

    我有以下代码行不断给我一个错误 即引擎对象没有对象执行 我认为我一切都对 但不知道接下来会发生什么 似乎其他人也遇到了这个问题 重新启动他们的笔记本电脑就可以了 我正在使用 Pycharm 并已重新启动但没有任何解决方案 任何帮助是极大的赞
  • 从 Yii2 中的联结表检索数据

    我试图从 Yii2 中的连接表获取数据无需额外查询 我有 2 个模型 用户 组 通过连接表 user group 关联 在 user group 表中 我想存储此关系的额外数据 管理标志 将数据添加到连接表的最佳方法是什么 link 方法接
  • MySQL 获取时间优化

    o我有一个包含 200 万个寄存器的表 但它很快就会增长得更多 基本上 该表包含具有相应描述符的图像的兴趣点 当我尝试执行选择在空间上靠近查询点的点的查询时 总执行时间花费太长 更准确地说 持续时间 获取 0 484 秒 27 441 秒
  • PHP实现的机票预订系统

    如何防止预订系统中的座位被重复预订 我正在用 PHP 和 MYSQL 制作一个航空旅行预订系统模型作为一个项目 我有一个小问题 仅在付款后 门票和座位详细信息才会永久存储在此处 座位号在付款前分配 假设人 1 预订了飞机上的座位 x 并支付
  • PHP MySQL 查询带有 %s 和 %d

    SELECT COUNT AS test FROM s WHERE id d AND tmp mail lt gt 什么是 s and d for 这些是使用的格式符号 例如经过sprintf 例子 Output SELECT COUNT
  • 如何在 MySQL Insert 语句中添加 where 子句?

    这不起作用 INSERT INTO users username password VALUES Jack 123 WHERE id 1 有什么想法如何通过 id 将插入范围缩小到特定行吗 在插入语句中 您不会有现有行来执行 where 语
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2

随机推荐

  • 【Java必修课】判断String是否包含子串的四种方法及性能对比

    1 简介 判断一个字符串是否包含某个特定子串是常见的场景 比如判断一篇文章是否包含敏感词汇 判断日志是否有ERROR信息等 本文将介绍四种方法并进行性能测试 2 四种方法 2 1 JDK原生方法String indexOf 在String的
  • QT画扇形和椭圆

    void MainWindow paintEvent QPaintEvent QPainter painter this painter setRenderHint QPainter Antialiasing true int radius
  • DTC status 为0x23的原因分析

    正常情况下dtc状态不可能出现0x23 当出现0x23可能是达芬奇中如下配置所致 1 PendingDtcProcessing设置为storeonly 此设置会导致没有分配快照空间的dtc无法set pending位 而且被displace
  • Python中的def函数

    概念 Python中的def语句用于定义一个函数 函数是一个代码块 它可以被重复调用 并且可以接收输入参数和返回值 在Python中 函数是由def关键字 函数名和圆括号内的参数列表组成的 场景 以下是几个函数使用场景的示例 阶乘计算 在计
  • Syntax Error: Error: Node Sass does not yet support your current environment...报错解决

    报错 Syntax Error Error Node Sass does not yet support your current environment Windows 64 bit with Unsupported runtime 93
  • Lambda表达式、std::function、和std::bind函数

    Lambda表达式 std function 和std bind函数 Lambda表达式 capture parameters mutable exception gt return type statement 1 capture 捕获外
  • Hook DirectInput->CreateDevice->GetDeviceData解决方案

    已解决 来人散分了 Hook DirectInput gt CreateDevice gt GetDeviceData 在一款使用DirectInput的3D游戏里面 通过Hook DirectInput8Create函数 CreateDe
  • 制作属于自己的个人博客-超详细教程

    SpringBoot个人博客 一 博客效果预览 博客首页预览 博客详情预览 博客评论区预览 博客底部栏预览 关于页面预览 二 博客效果在线预览 http blog ShaoxiongDu top 三 项目技术 后端SpringBoot框架
  • 基于神经网络实现数据自回归多变量预测及MATLAB实现代码

    基于神经网络实现数据自回归多变量预测及MATLAB实现代码 随着科技的不断发展 各种数据都被广泛应用到生产 生活中 而数据预测更是数据分析中重要的一环 在多变量预测领域 神经网络已经逐渐成为研究的热点之一 本文将介绍如何使用NARX NN实
  • 什么是高阶成分(HOC)?解释 React 中 render() 的目的?

    高阶成分 HOC 是一种基于React的组合特性而形成的设计模式 HOC是自定义组件 在其中包裹了另一个组件 他们可以接受任何动态提供的子组件 但不会修改或复制其输入组件中的任何行为 您可以说HOC是 纯 组件1 HOC通过对组件逻辑的重用
  • 目标检测和分类的评价指标

    准确率 Accuracy 混淆矩阵 Confusion Matrix 精确率 Precision 召回率 Recall 平均正确率 AP mean Average Precision mAP 交除并 IoU ROC AUC 非极大值抑制 N
  • 大数据工程师的日常工作是什么?要掌握哪些核心技术?

    很多人都听过大数据工程师 但却很少人知道他们是做什么的 下面就带大家一起来了解一下大数据工程师的日常 如果你对大数据感兴趣 下面的内容你一定要看看 大数据工程师是做什么的 分析历史 预测未来 优化选择 这是大数据工程师在 玩数据 时最重要的
  • npm run build源码是在哪里呢?

    npm run build 指令会执行 package json 中 scripts 字段的 build 脚本 这个脚本的代码可以在 package json 文件中的 scripts 字段内找到 例如 如果 package json 中的
  • gridlayout布局java_java Swing布局管理之GridLayout布局

    标签 GridLayout 类是一个布局处理器 它以矩形网格形式对容器的组件进行布置 容器被分成大小相等的矩形 一个矩形中放置一个组件 GridLayout网格布局特点 容器的空间划分成M N列的网格区域 每个区域只能放置一个组件 使容器中
  • JavaEE - 正则表达式、日期时间类、Math、Random、System、Runtime、大数值运算类

    一 正则表达式 用来描述或者匹配一系列符合某个语句规则的字符串 正则表达式定义了字符串的模式 可以用来搜索 编辑或处理文本 正则表达式是由普通字符 例如字符 a 到 z 以及特殊字符 称为 元字符 组成的文字模式 模式描述在搜索文本时要匹配
  • 蓝桥杯模拟、思维

    本文是根据博主安然无虞的文章进行我的思维训练和练习 下面是我的练习代码和思路 1 换酒问题 include
  • 人生就像一次旅行

    我很欣赏一个广告 特别是那句话 人生就像一次旅行 不必在乎目的地 在乎的是沿途的风景以及看风景的心情 人生怎样才能够真正做到如此的豁达 人生是一段旅程 在旅行中遇到的每一个人 每一件事与每一个美丽景色 都有可能成为一生中难忘的风景 一路走来
  • 不同数据库获取新增加的主键值

    不同数据库获取新增加的主键值 数据库 获取新增主键的查询语句 DB2 IDENTITY VAL LOCAL Informix SELECT dbinfo sqlca sqlerrd1 FROM table Sybase SELECT IDE
  • LeetCode刷题-4

    数组 35 搜索插入位置 题目描述 题目样例 Java方法 二分查找 思路及算法 代码 执行结果 复杂度 题目描述 给定一个排序数组和一个目标值 在数组中找到目标值 并返回其索引 如果目标值不存在于数组中 返回它将会被按顺序插入的位置 请必
  • MySQL 通配符学习小结

    原文 http blog csdn net ithomer article details 5130386 MySQL 通配符 SQL的模式匹配允许你使用 匹配任何单个字符 而 匹配任意数目字符 包括零个字符 在 MySQL中 SQL的模式