1

簡単な質問があると思います。varchar変数のcharのペアを調べて、何かをチェックしたいと思います。この単純なコード(以下に表示)を使用しようとしましたが、「ho」が2回出力されます。2番目のLEFTが機能しないのはなぜですか?

declare 
@name nvarchar(50),
@temp nvarchar(50)
set @name = 'house'
set @temp = @name
set @temp = Left(@temp,2)
print @temp
set @temp = Left(@temp,2)
print @temp
4

3 に答える 3

1

MSDNドキュメントから取得:

指定された文字数の文字列の左側を返します。

したがってLeft(@temp,2)、「ho」を返します

Left("ho",2)また、「ho」を返します。

したがって、常に「ho」を取得します。


PRINT最初の2文字を削除してから削除する場合は、次のようにします。

PRINT Left(@temp,2)
SET @temp = SUBSTRING(@temp, 2, LEN(@temp)-2)

その後、もう一度電話をかけるLeft(@temp,2)と、「私たち」になります

于 2012-11-26T11:07:24.810 に答える
0

これは、本来あるべきとおりに機能しています。

declare 
@name nvarchar(50),
@temp nvarchar(50)
set @name = 'house'
set @temp = @name
set @temp = Left(@temp,2) --here @temp has ho
print @temp
set @temp = Left(@temp,2) -- you are trying again to get 
                          --left ('ho',2)
                          --this will again return you ho
print @temp

最初set @temp = Left(@temp,2)は、保持する温度を設定してい'ho'ます。2番目のsetステートメントでは、文字列の左から2文字にアクセスしようとしていますが'ho'、これでも同じことがわかります。

于 2012-11-26T11:06:30.843 に答える