有人可以解释regexp_matches()
PostgreSQL 9.2.4 中的这种奇怪行为(9.1.9 中的结果相同):
db=# SELECT regexp_matches('test string', '$') AS end_of_string;
end_of_string
---------------
{""}
(1 row)
db=# SELECT regexp_matches('test string', '$', 'g') AS end_of_string;
end_of_string
---------------
{""}
{""}
(2 rows)
第二个参数是一个正则表达式。$
标记字符串的结尾。
第三个参数用于标志。g
用于“全局”,这意味着该功能不会在第一次匹配时停止。
该函数似乎使用标志两次报告字符串的结尾,但每个定义g
只能存在一次。它打破了我的查询。:(
我错过了什么吗?
对于任何可能的字符串,我需要我的查询在最后返回一行。我希望这个查询能够完成这项工作,但它添加了两行:
SELECT (regexp_matches('test & foo/bar', '(&|/|$)', 'ig'))[1] AS delim
我知道如何手动添加一行,但我想让函数处理它。