簡単な質問@len
です。以下のクエリで変数の値を出力すると、値が 12 (指定された文字列の文字数) ではなく 1 になるのはなぜですか?
DECLARE @string varchar
DECLARE @index int
DECLARE @len int
DECLARE @char char(1)
SET @string = 'content loop'
SET @index = 1
SET @len= LEN(@string)
print @len
簡単な質問@len
です。以下のクエリで変数の値を出力すると、値が 12 (指定された文字列の文字数) ではなく 1 になるのはなぜですか?
DECLARE @string varchar
DECLARE @index int
DECLARE @len int
DECLARE @char char(1)
SET @string = 'content loop'
SET @index = 1
SET @len= LEN(@string)
print @len
あなたの宣言@string
は間違っています。に長さがありませんvarchar
。
これを試して:
declare @string varchar(255); -- or whatever
この状況でのデフォルトは 1 であることを学習しました。
これはドキュメントで明確に指定されています。さらに注意すると、MS SQL はこれをかなり複雑にしているようです。
データ定義または変数宣言ステートメントで n が指定されていない場合、デフォルトの長さは 1 です。CAST 関数および CONVERT 関数を使用するときに n が指定されていない場合、デフォルトの長さは 30 です。
varchar
またはを使用するときは常に長さを含めるのが正しい習慣ですnvarchar
。
変数 @string に実際の長さを与える必要があります。変数 @string を出力すると、おそらく 'C' が返されます。