小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

SQLServer で text型の項目の文字数を求める

SQL Server 2008 Developer 日本語版
SQLServerでのtext型は、2,147,483,647(2^31-1)バイト内の非Unicode可変長文字列型です。
このように大きなデータ型なので、文字数を求めるときに varchar型のように LEN関数が使えません。
しかし、text型でも 8000バイト以下なら、以下の感じで文字数を求めることができます。

サンプル(Message項目がtext型のケース)

SELECT LEN(CAST([Message] AS varchar(8000)))
FROM [TmpTBL]
ORDER BY LEN(CAST([Message] AS varchar(8000))) DESC


ちなみに、バイト数なら text型でも普通にDATALENGTH関数が使えます。

SELECT DATALENGTH([Message])
FROM [TmpTBL]
ORDER BY DATALENGTH([Message]) DESC

尚、DESCは降順ソートです。


上記は、SQLServer2000でテストをしましたが、たぶん、SQLServer2005や2008でも同じだと思う。