[英]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.