繁体   English   中英

正则表达式:Postgres SQL查询返回表中所有可用的记录

[英]Regular expression: Postgres SQL query is returning all records available in the table

下面的Postgres SQL查询返回表中所有可用的记录。 有人可以解释一下吗? 另外请让我知道在Postgres正则表达式中*代表什么。

Employee table contains :

name
Chennai
Delhi
Hydrabad
NewYark
ABC

select * from employee where name ~ 'Z*'

这是查找以'Z'开头的名称的正确查询:

SELECT record FROM myrecords WHERE name ~ '^Z';

在您的查询中:

select * from employee where name ~ 'Z*'

含义是名称与字符“ Z”的零或更多序列匹配,从而返回所有记录。

  • 匹配条件中的*表示零次或多次发生。

  • *和tilda一起表示不区分大小写的匹配,即〜*'Z'将同时匹配“ z”和“ Z”

更多信息请看这里:

http://oreilly.com/pub/a/databases/2006/02/02/postgresq_regexes.html?page=1

*量词表示零或更大 由于每个名称至少包含零个Z字符,因此将返回每一行。

您不需要使用正则表达式来查找以字符开头的字符串,只需使用LIKE

SELECT record FROM myrecords WHERE name LIKE 'Z%';

如果要使用正则表达式以Z开头的名称,请尝试以下操作:

SELECT record FROM myrecords WHERE name ~ '^Z';

如果您想要包含至少一个Z的名称,请尝试以下方法之一:

SELECT record FROM myrecords WHERE name LIKE '%Z%';
SELECT record FROM myrecords WHERE name ~ 'Z';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM