ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

SQL:PostgreSQLでデータベースに格納された文字列の長さを調べる方法

2000件以上のデータの中から、長い文字列が格納された行を処理した結果を確認したくなりました。

プログラムで調べてもいいのですが、SQLでできないか確認したら、PostgreSQLでは、char_length()という関数が用意されていました。

 

使い方

使い方は簡単で

SELECT char_length(string1) AS len1, * FROM test

とすれば、長さがわかりました。

 

もうちょっと便利に

長い順に並べ替えるために、

SELECT char_length(string1) AS len1, * FROM test ORDER BY len1 DESC

とすると、string1に必ず文字が入っていれば、長い順になりますが、入っていないと正しく並び替えられません。

 

今回はCASE式を使って、

SELECT
CASE 
  WHEN char_length(string1) IS NULL THEN 0 
  ELSE char_length(string1)
end AS len1 
, *  
FROM test ORDER BY len1 DESC

として、目的どおりの並び順にしました。

 

他のデータベースでも似たような関数があるので、似たような書き方ができると思います。