PostgreSQLで特定の列の文字数をカウントし、文字数順に並べ替える方法 - length関数を使用

length関数を使用すれば、列(カラム)の文字数をカウントできる。

《length関数の使い方》
select length (列の名前) from テーブル名;

《length関数で求めた各行(レコード)の特定の列の文字数を10件分取得する例》
データベース:test_databaseのテーブル:sample_tableに含まれる列(カラム):sample_columnの文字数を10件分取得する時のSQL文、実行結果は以下のようになる。

test_database=# select length (sample_column) from sample_table limit 10;
length
--------
6
5
9
12
12
9
12
15
16
20
(10 rows)


《length関数で求めた各行(レコード)の特定の列の文字数の多い順に10件分取得する例 - null値で失敗している例》

test_database=# select length (sample_column) as text_length from sample_table order by text_length desc limit 10;
text_length
-------------


(10 rows)

カウント対象の列(カラム)にnull値が含まれていると、どうやら最大値として計算されるようだった。
従って、null値を除外したSQL文を作成・実行する必要がある。

《length関数で求めた各行(レコード)の特定の列の文字数の多い順に10件分取得する例 - null値を除外したことで、期待通りの結果が得られている例》
test_database=# select length (sample_column) as text_length from sample_table where sample_column is not null order by text_length desc limit 10;
text_length
-------------
100
100
100
100
100
100
96
96
95
95
(10 rows)

《length関数で求めた各行(レコード)の特定の列の文字数の少ない順に10件分取得する例》
test_database=# select length (sample_column) as text_length from sample_table order by text_length asc limit 10;
text_length
-------------
2
2
3
3
3
3
4
4
4
5
(10 rows)

文字数の少ない順に並べ替える時は、null値を除外しなくても期待通りの結果を得られたが、たまたまうまくいっただけかもしれないので、少ない順に並べ替える時も、null値は除外しておいた方が安全かと思う。

前へ

近づいてキスするように臭い合う猫達-桜田公園にて

次へ

玄関の下駄箱の上に座る猫-ゆきお