説明
方法 1: string_to_array
と array_length
を使用
string_to_array
関数を使って文字列をカンマで分割し、array_length
関数で配列の要素数をカウントします。
-
'10,20,30,40,50'
はカンマ区切りの文字列です。 -
string_to_array('10,20,30,40,50', ',')
は、カンマで区切られた文字列を配列に変換します。 -
array_length(..., 1)
は、その配列の要素数を返します。
SELECT array_length(string_to_array('10,20,30,40,50', ','), 1) AS element_count;
element_count
---------------
5
方法 2: regexp_split_to_array
と array_length
を使用
もし文字列の中に余分なスペースや特殊なパターンが含まれている場合、regexp_split_to_array
関数を使って正規表現で文字列を分割できます。
-
regexp_split_to_array('10,20,30, 40, 50', '\s*,\s*')
では、カンマの前後にあるスペースを無視して要素を分割します。
SELECT array_length(string_to_array('10,20,30,40,50', ','), 1) AS element_count;
element_count
---------------
5
方法 3: 単純なカンマの数を数える方法
要素数がカンマの数に1を加えた値である場合(要素がカンマで分割されている前提)、length
関数と replace
関数を使ってカウントできます。
-
length('10,20,30,40,50')
は元の文字列の長さを取得します。 -
replace('10,20,30,40,50', ',', '')
はカンマをすべて削除し、その後の長さを取得します。 - 元の長さからカンマを削除した後の長さを引くと、カンマの数が分かります。そこに
+1
することで、要素の数を取得します。
SELECT array_length(string_to_array('10,20,30,40,50', ','), 1) AS element_count;
element_count
---------------
5