誰かが PostgreSQL 9.2.4でのこの奇妙な動作を説明できますかregexp_matches()
(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)
2 番目のパラメーターは正規表現です。$
文字列の終わりを示します。
3 番目のパラメーターはフラグ用です。g
は「グローバル」用です。つまり、関数は最初の一致で停止しません。
この関数は、フラグを使用して文字列の末尾を2 回報告しているように見えますが、定義ごとに 1回しg
か存在できません。それは私のクエリを壊します。:(
何か不足していますか?
可能な文字列について、クエリが最後にもう 1行を返す必要があります。このクエリでうまくいくと思っていましたが、次の2 つの行が追加されます。
SELECT (regexp_matches('test & foo/bar', '(&|/|$)', 'ig'))[1] AS delim
行を手動で追加する方法は知っていますが、関数に処理させたいです。