SQL Serverのテキスト(nvarchar)列の文字を数える良い方法を知っている人はいますか?そこにある値は、テキスト、記号、および/または数字である可能性があります。
これまで使用sum(datalength(column))/2
しましたが、これはテキストに対してのみ機能します。(これはデータ長に基づく方法であり、これはタイプごとに異なる可能性があります)。
SQL Serverのテキスト(nvarchar)列の文字を数える良い方法を知っている人はいますか?そこにある値は、テキスト、記号、および/または数字である可能性があります。
これまで使用sum(datalength(column))/2
しましたが、これはテキストに対してのみ機能します。(これはデータ長に基づく方法であり、これはタイプごとに異なる可能性があります)。
システム関数を使用して文字数を確認できますLEN
。すなわち
SELECT LEN(Column) FROM TABLE
使用する
SELECT length(yourfield) FROM table;
LEN
次の関数を使用します。
末尾の空白を除いて、指定された文字列式の文字数を返します。
動作しませんSELECT LEN(column_name)
か?
テキストはlen関数では機能しません。
ntext、text、およびimageデータ型は、MicrosoftSQLServerの将来のバージョンで削除される予定です。これらのデータ型を新しい開発作業で使用することは避け、現在それらを使用しているアプリケーションを変更することを計画してください。代わりに、nvarchar(max)、varchar(max)、およびvarbinary(max)を使用してください。詳細については、「大きな値のデータ型の使用」を参照してください。
私は最近同様の問題を抱えていました、そしてこれが私がしたことです:
SELECT
columnname as 'Original_Value',
LEN(LTRIM(columnname)) as 'Orig_Val_Char_Count',
N'['+columnname+']' as 'UnicodeStr_Value',
LEN(N'['+columnname+']')-2 as 'True_Char_Count'
FROM mytable
最初の2列は元の値を確認し、文字数を数えます(先頭/末尾のスペースを差し引いたもの)。
これを実際の文字数と比較する必要があったため、2番目のLEN関数を使用しました。列の値を文字列に設定し、その文字列をUnicodeに強制してから、文字をカウントします。
角かっこを使用すると、先頭または末尾のスペースも文字としてカウントされます。もちろん、角かっこ自体は数えたくないので、最後に2を引きます。