PostgreSQL – regex split ile dize bölmek
PostgreSQL’de bir dizeyi belli bir karaktere göre parçalara ayırmak (split) için 2 tane fonksiyonumuz var; regexp_split_to_array
ve regexp_split_to_table.
regexp_split_to_array
: Dizeyi regular expression’a göre parçalara ayırır ve parçaları bir array içerisinde döner.
regexp_split_to_table
: Dizeyi regular expression’a göre parçalara ayırır ve bu parçaları bir tablonun satırları şeklinde döner.
Örnekler
space (' ')
karakterine göre parçala, array olarak al.
SELECT regexp_split_to_array('hello world', E'\\s+') AS sentence;
space
karakterine göre parçala, array olarak al. Daha sonra bu arraydeki birinci ve ikinci alanları ayrı ayrı listele.
SELECT sentence[1] AS first_word, sentence[2] AS second_word FROM ( SELECT regexp_split_to_array('hello world', E'\\s+') AS sentence ) foo;
nokta (.)
karakterine göre parçala, 2. parçayı al.
SELECT (regexp_split_to_array('www.veritabanı.gen.tr', E'\\.'))[2]
space
karakterine göre parçala, tablo olarak al.
SELECT regexp_split_to_table('hello world', E'\\s+');
Virgül’e göre parçala tablo içerisinde sayı olarak sıralayarak getir.
SELECT number::INTEGER FROM regexp_split_to_table('1,3,2,4,7,5,9,10', ',') AS number ORDER BY 1;
Referanslar
- https://www.postgresql.org/docs/current/static/functions-string.html#FUNCTIONS-STRING-OTHER
- https://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP
Eline sağlık Şahap güzel bir makale olmuş herkese faydalı olacağını tahmin edebiliyorum. Devamını bekliyoruz