簡體   English   中英

在SQL中選擇與輸入匹配的正則表達式值的行?

[英]Select rows in SQL with regex values that match input?

我不是要根據行的字符串值是否等於給定的正則表達式輸入來選擇行,而是要選擇具有與給定的字符串輸入相匹配的正則表達式的行。

就目的而言,我正在嘗試從輸入URL識別網站名稱。

TABLE
WEBSITE                    REGEX 
The New York Times         ^.+\.nytimes.com.*$

有什么好方法嗎? 我正在使用postgres,希望能避免大循環。

謝謝!

這似乎工作正常:

CREATE TABLE Sites
(
   SiteName text,
   RegEx text  
);

INSERT INTO Sites VALUES ('NY Times', '^.+\.nytimes.com.*$');

然后,您可以執行以下操作:

SELECT * FROM Sites
WHERE 'http://www.nytimes.com/Foo' ~ RegEx;

小提琴

請記住,如果您有很多行,這可能會開始變慢,因為每次都必須進行順序表掃描並對每行運行正則表達式。 更好的方法可能是先解析URL並以某種方式對其進行規范化,然后在表中查找完全匹配的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM