SQL 查询语句: 字符串正则匹配 All In One
SQL 查询语句: 字符串正则匹配 All In One
MySQL 字符串正则匹配
# Write your MySQL query statement below
SELECT *
FROM Patients
WHERE conditions REGEXP '^DIAB1|.*( )+DIAB1'
# WHERE conditions REGEXP '^DIAB1|.*(\s)+DIAB1'
# 空格 \s 不好使 ❓
# 空格 ‘ ’ 好使 ✅
# SELECT *
# FROM Patients
# WHERE conditions LIKE 'DIAB1%'
# 前缀 DIAB1
# https://leetcode.cn/problems/patients-with-a-condition/solution/by-jam007-5jd4/
/*
{"headers": {"Patients": ["patient_id", "patient_name", "conditions"]}, "rows": {"Patients": [[1, "Daniel", "YFEV COUGH"], [2, "Alice", ""], [3, "Bob", "DIAB100 MYOP"], [4, "George", "ACNE DIAB100"], [5, "Alain", "DIAB201"]]}}
{"headers": {"Patients": ["patient_id", "patient_name", "conditions"]}, "rows": {"Patients": [[1, "Daniel", "SADIAB100"]]}}
*/
https://leetcode.cn/problems/patients-with-a-condition/
https://leetcode.cn/problems/patients-with-a-condition/submissions/
LIKE
SQL 模糊匹配 / SQL 模糊查询
SELECT * FROM users WHERE user.name LIKE 'X%'
RLIKE
SQL 通配符
MySQL 中使用 REGEXP
或 NOT REGEXP
运算符 或 RLIKE
和 NOT RLIKE
来操作正则表达式
# 下面的 SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';
# 下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站:
SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';
# 下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:
SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';
MySQL 运算符
MySQL 的运算符及运算符的优先级。
算术运算符
比较运算符
逻辑运算符
位运算符
LIKE | 模糊匹配 | |
---|---|---|
REGEXP 或 RLIKE | 正则式匹配 |
https://www.runoob.com/?s=RLIKE
https://www.runoob.com/sql/sql-wildcards.html
https://www.runoob.com/mysql/mysql-operator.html
MySQL 正则表达式
模式 | 描述 |
---|---|
^ |
匹配输入字符串的开始 位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 |
$ | 匹配输入字符串的结束 位置。如果设置了 RegExp 对象的 Multiline 属性,\$ 也匹配 '\n' 或 '\r' 之前的位置。 |
. |
匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式。 |
[...] |
字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 |
[^...] |
负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 |
p1|p2|p3 |
匹配 p1 或 p2 或 p3。例如,`'z |
* |
匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 |
+ |
匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,} 。 |
{n} |
n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 |
{n,m} |
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |
https://www.runoob.com/mysql/mysql-regexp.html
Markdown ??? $
渲染 bug ❌
HTML Entity Code
https://developer.mozilla.org/en-US/docs/Glossary/Entity
https://html.spec.whatwg.org/multipage/named-characters.html
ENTITY | HTML CODE | RESULTING SYMBOL |
---|---|---|
$ |
$ |
$ |
https://www.freecodecamp.org/news/html-symbols-html-icon-and-entity-code-list/
solution ✅
二次转义 \$
=> \\$
模式 | 描述 |
---|---|
💰 | 匹配输入字符串的结束 位置。如果设置了 RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 |
$ | 匹配输入字符串的结束 位置。如果设置了 RegExp 对象的 Multiline 属性,\💰 也匹配 '\n' 或 '\r' 之前的位置。 |
$ | 匹配输入字符串的结束 位置。如果设置了 RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 |
$ | 匹配输入字符串的结束 位置。如果设置了 RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 |
$ | 匹配输入字符串的结束 位置。如果设置了 RegExp 对象的 Multiline 属性,\$ 也匹配 '\n' 或 '\r' 之前的位置。 |
$ | 匹配输入字符串的结束 位置。如果设置了 RegExp 对象的 Multiline 属性,\$ 也匹配 '\n' 或 '\r' 之前的位置。 |
| 模式 | 描述 |
| -- | -- |
| 💰 | 匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\$ 也匹配 `'\n' 或 '\r'` 之前的位置。|
| $ | 匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\💰 也匹配 `'\n' 或 '\r'` 之前的位置。|
| $ | 匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\$ 也匹配 `'\n' 或 '\r'` 之前的位置。|
| $ | 匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\$ 也匹配 `'\n' 或 '\r'` 之前的位置。|
| $ | 匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\\$ 也匹配 '\n' 或 '\r' 之前的位置。|
| $ | 匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\\$ 也匹配 `'\n' 或 '\r'` 之前的位置。|
https://www.freeformatter.com/html-entities.html
https://www.toptal.com/designers/htmlarrows/symbols/
https://www.w3schools.com/html/html_entities.asp
MySQL 字符串正则匹配空格
空格 \s
不好使 ❓
空格 \\s
要转义
✅
# Write your MySQL query statement below
SELECT *
FROM Patients
# WHERE conditions REGEXP '^DIAB1|.*( )+DIAB1'
# WHERE conditions REGEXP '^DIAB1|.*(\s)+DIAB1'
WHERE conditions REGEXP '^DIAB1|.*(\\s)+DIAB1'
# 空格 \s 不好使 ❓ \\s 要转义 ✅
# 空格 ‘ ’ 好使 ✅
refs
https://www.runoob.com/mysql/mysql-functions.html
©xgqfrms 2012-2020
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/16782997.html
未经授权禁止转载,违者必究!