簡體   English   中英

PostgreSQL 提取括號之間的值

[英]PostgreSQL extract values between brackets

我在 PostgreSQL 11 中有一個字符串:

'for values from ('2022-01-01') to ('2023-01-01')'

我需要提取括號之間的所有值:

預期結果:“2022-01-01”、“2023-01-01”

如果我使用以下構造,則只能提取第一個值:

select substring('FOR VALUES FROM (''2020-01-01'') TO (''2021-01-01'')' from '\((.*?)\)');

是否可以提取第二個值? 或者兩個值都作為一個數組?

您可以使用regexp_match()

select regexp_matches('for values from (''2022-01-01'') to (''2023-01-01'')', '\((.[^)]+)\)', 'g')

如果只有一級括號,則可以將regexp_matches()g (全局)標志一起使用。

SELECT *
       FROM regexp_matches('for values from (''2022-01-01'') to (''2023-01-01'')', '\([^\)]*\)', 'g');

否則,如果有更多級別,則會得到混亂的結果。 在這種情況下,您需要定義您所追求的級別,在這種情況下,正則表達式的用途可能有限。

暫無
暫無

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

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