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

Loading

1 Comment

  1. Erol Yılmaz says:

    Eline sağlık Şahap güzel bir makale olmuş herkese faydalı olacağını tahmin edebiliyorum. Devamını bekliyoruz

Leave Your Comment