3

私はMicrosoft SQL Serverを使用しています(問題がある場合は2008 R2)

私が実行すると

select LEN('test')

予想通り4点取れました

しかし、今これを試してください:

declare @s varchar
set @s='test'
select LEN(@s)

そして結果は… 1

それは実際にどのように機能しますか?

4

3 に答える 3

5

それは、もしあなたがするなら

SELECT @s 

それは戻るだろう

t

それだけ。長さを指定する必要があります。

char および varcharから(Transact-SQL)

データ定義または変数宣言ステートメントで n が指定されていない場合、デフォルトの長さは 1 です。CAST 関数および CONVERT 関数を使用するときに n が指定されていない場合、デフォルトの長さは 30 です。

SQL フィドルのデモ

于 2013-10-03T12:17:51.283 に答える
5

これを定義すると:

declare @s varchar

正確に 1 文字の長さvarcharのを取得します。

絶対に何も悪いことはありませんLEN

あなたがする必要があるのは、変数を定義するときに明示的な長さを指定することですvarchar

declare @s varchar(20)
set @s='test'
select LEN(@s)

LEN これで、 ...から 4 が返されるはずです。

注:使用するときは常に長さを指定することをお勧めします。そうしないと、このような驚きに遭遇することになります。....varchar

于 2013-10-03T12:18:42.097 に答える