0

問題

私は3つの変数、、を持って@str1@str2ます@str3。したがって、変数の先頭にスペースを追加すると、正しい長さになりますが、最後にスペースを追加すると、間違った結果になります。

解決策

この動作を回避するためにtrim、変数の長さをチェックする前に変数を使用できます。

質問

なぜそれが起こるのかabこれを行うことの利点は何ですか(左側ではなく右側からスペースをトリミングします)?

 declare @str1 varchar(30), @str2 varchar(30), @str3 varchar(30)
    SET @str1 = ' kratika,vikas,kritika'
    SET @str2 = 'kratika,vikas,kritika '
    SET @str3 = 'kratika,vikas,kritika'

PRINT LEN(@str1)
PRINT LEN(@str2)
PRINT LEN(@str3)

出力

    22
    21
    21

質問が明確でない場合はお知らせください。

4

1 に答える 1

2

それが文書化されていることです:

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

、 と、

式を表すために使用されるバイト数を返すには、DATALENGTH関数を使用します。

SQLには、末尾の空白文字をやや特殊なものとして扱う機能がいくつかあります。たとえば、文字列'abc ''abc'は等しいと見なされます。これは、比較が行われる前に、事実上、短い文字列にスペースが追加されるためです。


末尾の空白を含む文字列の長さを決定する場合、明らかなことは、渡された文字列に単一の非空白を連結しLEN()、結果から1を引くことです。

于 2013-03-18T11:48:47.270 に答える