xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

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 中使用 REGEXPNOT REGEXP 运算符 或 RLIKENOT 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
&dollar; &#36; $

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'` 之前的位置。|
| &dollar; |  匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\$ 也匹配 `'\n' 或 '\r'` 之前的位置。|
| &#36; |  匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\$ 也匹配 `'\n' 或 '\r'` 之前的位置。|
| $ |  匹配输入字符串的`结束`位置。如果设置了 RegExp 对象的 Multiline 属性,\\&#36;  也匹配 '\n' 或 '\r' 之前的位置。|
| &#36; | 匹配输入字符串的`结束`位置。如果设置了 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, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2022-10-11 23:17  xgqfrms  阅读(1328)  评论(2编辑  收藏  举报