Похоже, это вариант подстроки, которая выполняет сопоставление с регулярным выражением.Первый аргумент xxx_json::text
- это строка для поиска.Второй аргумент - это регулярное выражение для сопоставления.
Обратите внимание, что второй аргумент состоит из всего строкового литерала SQL 'Name":"(.+)" , "store'
(в первых двух случаях).Все в этой строке, кроме (.+)
, должно буквально соответствовать части строки, которую нужно искать.(.+)
- это синтаксис регулярных выражений.Точка соответствует любому символу;+ означает одно или несколько вхождений;скобки определяют это как группу захвата.В этом контексте текст, соответствующий группе захвата, - это то, что будет возвращено подстрокой.
Так, например, если содержимое искомой строки было простым выражением JSON, например: { "Name":"John Smith" , "store":"London" }
,регулярное выражение совпадало бы, и подстрока возвращала бы 'John Smith'
.
Короче говоря, это немного хакерский способ синтаксического анализа JSON в SQL для извлечения значения элемента Name (или некоторого элемента, ключ которого заканчивается на Name).
Подробную документацию по этой форме подстроки см. В разделе 9.7.3 в https://www.postgresql.org/docs/9.4/static/functions-matching.html.