42

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

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

4

6 に答える 6

79

システム関数を使用して文字数を確認できますLEN。すなわち

SELECT LEN(Column) FROM TABLE
于 2013-01-10T10:06:41.110 に答える
12

使用する

SELECT length(yourfield) FROM table;
于 2015-09-01T10:04:07.400 に答える
7

LEN次の関数を使用します。

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

于 2013-01-10T10:07:11.910 に答える
5

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

于 2013-01-10T10:06:51.420 に答える
1

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

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

ソース

于 2013-01-10T10:11:11.247 に答える
0

私は最近同様の問題を抱えていました、そしてこれが私がしたことです:

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

于 2013-10-24T20:13:46.247 に答える