web-dev-qa-db-ja.com

nvarchar列の文字数をカウントします

誰もがSQL Serverのテキスト(nvarchar)列の文字をカウントする良い方法を知っていますか?そこにある値は、テキスト、記号、および/または数字です。

これまでsum(datalength(column))/2を使用しましたが、これはテキストに対してのみ機能します。 (これはデータ長に基づくメソッドであり、これはタイプごとに異なる場合があります)。

34
Sam

システム関数LENを使用して文字数を見つけることができます。つまり.

SELECT LEN(Column) FROM TABLE
65
TechDo

つかいます

SELECT length(yourfield) FROM table;
6
Marc

LEN 関数を使用します。

末尾の空白を除く、指定された文字列式の文字数を返します。

6
Oded

SELECT LEN(column_name)動作しませんか?

4
brykneval

テキストはlen関数では機能しません。

ntext、text、およびimageデータ型は、Microsoft SQL Serverの将来のバージョンで削除される予定です。これらのデータ型を新しい開発作業で使用することは避け、現在それらを使用しているアプリケーションを変更することを計画してください。代わりに、nvarchar(max)、varchar(max)、およびvarbinary(max)を使用してください。詳細については、「大きな値のデータ型の使用」を参照してください。

ソース

1
mr_eclair

私は最近同様の問題を抱えていましたが、私がやったことは次のとおりです:

    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を引きます。

0
ORSJess