1

データがシングルバイトまたはダブルバイトのデータでロードされていることを知りたいのですが、以下に貼り付けた列データを見つけてください。

حمد بخش مبار

select CTD_BENAC_NAME 
from NAME_TRAN_DETAILS 
where CTD_SEND_INS_REF ='FTSCWOK11074799'

結果にアラビア語のデータが表示されます。データがSQLServerのシングルバイトまたはダブルバイトで読み込まれていることを知りたいのですが、どうすれば決定できますか?

4

1 に答える 1

1

その列のデータ型によって異なります。SQL Server には、通常と Unicode の 2 種類の文字データ型があります。CHARおよびである通常のデータ型VARCHARNCHARや などの Unicode データ型NVARCHAR。通常の文字の場合、SQL Server は文字ごとに 1 バイトのストレージを使用しますが、Unicode 文字NVARCHARは文字ごとに 2 バイトを使用します。

DATALEGNTHまたはLEN次のように使用して、文字列で使用されるバイト数を取得することもできます。

SELECT DATALENGTH(inputstring); 

後で説明したように、これinputstringが型である場合、NVARCHARまたはN'string' DATALENGTHバイト数が得られます。は文字列の文字数LENを示しますが、その長さは必ずしもバイト数ではありません。

と のもう 1 つの違いは、 は末尾の空白を除外し、 は除外しないことに注意LENしてDATALENGTHください。また、以下の @MartinSmith コメントで指摘されているように、 Varchar = single byte が常に true であるとは限らないため、照合に依存するため、これらの関数には注意してください。LENDATALENGTH

これはそのためのデモです。自分で試すことができます。

デモ

于 2012-09-27T08:19:58.597 に答える