本文介绍: 我们正则表达式为:“4[0–9]{12}(?:[0–9]{3})?” 4[0–9]{12}:正则表达式的这一部分基本上表示该模式以 4 开头,后跟包含 (0–9) 的 12 个数字。:[0–9]{3}):旧的 Visa 卡有 13 位数字,因此这代表可选的 3 位数字。~*:用于匹配正则表达式字符串,不区分大小写。~:用于字符串,不匹配正则表达式,区分大小写。3. ~*:用于字符串匹配正则表达式,不区分大小写。我们正在过滤所有不符合模式电子邮件查询。~:用于匹配正则表达式字符串,区分大小写。

使用正则表达式通过用例查询 Postgres 数据库

正则表达式(又名 Regex

例子 

现在基础知识已经清楚了,让我们讨论如何使用正则表达式进行数据库查询

正则表达式与数据库

我们需要记住,并非所有数据库都支持正则表达式。
Postgres

列表
~:用于匹配正则表达式的字符串,区分大小

# 搜索所有符合模式电子邮件
postgres=# select email from accounts where email ~ ‘^S+@S+.S+$’;

2. !~:用于字符串,不匹配正则表达式,区分大小写。

# 搜索所有与模式匹配电子邮件
postgres=# select email from accounts where email !~ ‘^S+@S+.S+$’;

3. ~*:用于字符串匹配正则表达式,不区分大小写。

# s以不区分大小写的方式搜索模式匹配的所有电子邮件
postgres=# select email from accounts where email !~ ‘^S+@S+.S+$’;

4. !~*:用于不匹配正则表达式的字符串,不区分大小写。

# 搜索所有与模式不匹配的邮件,不区分大小写
postgres=# select email from accounts where email !~ ‘^S+@S+.S+$’;

用例通过品牌名称查找信用卡

表中记录

postgres=# select * from credit_card;
id |   card_number    | expiry_date | customer_id
—-+——————+————-+————-
11 | 2344323432112222 | 2023-04-10  |          10
10 | 2344323432112422 | 2023-04-12  |          10
13 | 4111111111111111 | 2023-04-11  |          10
14 | 4111111131111111 | 2023-05-11  |          10
15 | 4111111131119111 | 2023-05-12  |          10
17 | 378282246310005  | 2023-05-09  |          10
18 | 378282246710005  | 2024-05-09  |          10
21 | 4111111131119    | 2025-05-12  |          10
(8 rows)

查询Visa信用卡 
postgres=# select * from credit_card where card_number ~ ‘^4[0-9]{12}(?:[0-9]{3})?$’;

  • Visa信用卡均以4开头,旧卡为13位,新卡为16位。
  • 我们的查询返回预期的 4 张以 4 开头的卡片。

美国运通:
postgres=# select * from credit_card where card_number ~ ‘^3[47][0-9]{13}$’;

用例:查找所有与 emailId 模式不匹配的电子邮件

在正则表达式中,我们正在寻找characters@characters.character(例如abc@gmail.com)模式。
我们正在过滤所有不符合模式的电子邮件的查询。

select email from accounts where email !~ ‘^S+@S+.S+$’;

我们的输出包含不具有上述定义模式的电子邮件。

postgres=# select email from accounts where email !~ ‘^S+@S+.S+$’;
email
————-
abctest.com
(1 row)

https://www.jdon.com/70336.html

原文地址:https://blog.csdn.net/cfy_banq/article/details/134702801

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_18261.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注