誰もが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データ型は、Microsoft SQL Serverの将来のバージョンで削除される予定です。これらのデータ型を新しい開発作業で使用することは避け、現在それらを使用しているアプリケーションを変更することを計画してください。代わりに、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を引きます。