在SQL Server 2005中爲什麼ROW(@foostr,0)在@foostr爲varchar(max)時返回NULL?
如果我想找到一個varchar(最大)變量的最右側的一個字,沒有問題:
declare @foostr varchar(max)
set @foostr = 'abcd'
select right (@foostr, 1)
----
d
如果我想找到最右邊的零個字符沒有問題:
select right ('abcd', 0)
------------------
它返回一個空字符串。
如果我想找到一個varchar(10)的最右邊的零個字符,沒有問題:
declare @foostr varchar(10)
set @foostr = 'abcd'
select right (@foostr, 0)
----
它返回一個空字符串。
如果我想找到一個varchar(最大)的最右邊的零個字符,以及:
declare @foostr varchar(max)
set @foostr = 'abcd'
select right (@foostr, 0)
----
NULL
返回null。爲什麼?
我要問你爲什麼會想這樣做? – HLGEM 2010-06-10 20:49:34
只是使用:'ISNULL(右(@foostr,0),'')',你很好去... – 2010-06-10 20:55:12
不久前;我不記得確切 - 爲了好玩,我試圖編寫一個string.reverse(),並且我遍歷一個字符串並移動字符,並在最後一行迭代: set @string = substring(@ string,@index,1)+ left(@string,@index)+ right(@string,len(@string) - @index) 返回NULL而不是最終的反轉字符串。或類似的東西。 – 2010-06-10 21:06:26