簡體   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