我在SQL Server中遇到問題。我想用Ltrim和Rtrim去除空間。SQL Server微調功能
我的查詢是這樣的
select len('test ')
返回6
select len(rtrim(ltrim('test ')))
返回6
爲什麼它不刪除的空間?
我已經檢查了ASCII值這個空間是32
任何幫助嗎?
謝謝
我在SQL Server中遇到問題。我想用Ltrim和Rtrim去除空間。SQL Server微調功能
我的查詢是這樣的
select len('test ')
返回6
select len(rtrim(ltrim('test ')))
返回6
爲什麼它不刪除的空間?
我已經檢查了ASCII值這個空間是32
任何幫助嗎?
謝謝
因爲此字符串中沒有空格 - test
之後有兩個水平製表符(\t
)。
優秀的答案。當然可以解釋6的Len()數,但是ascii代碼呢? +1 – markblandford 2012-03-08 13:40:48
除非OP提供更多信息,否則無法猜測。 – 2012-03-08 13:47:56
萊恩Returns the number of characters of the specified string expression, excluding trailing blanks.
因此,len不字符串中的計數額外的尾隨空白。如果你把這些空白放在字符串之前,那麼這些將會被計數。
沒有引起太大意義,我爲:
SELECT LEN('test ')
應該返回4,而不是6 - LEN()將不計數尾隨空格。
而如果你做的事:
SELECT DATALENGTH('test ')
將返回6作爲DATALENGTH 確實計數尾隨空格。
它返回6是因爲字符串中沒有空格 - [這些是製表符](http://stackoverflow.com/a/9618274/95)。 – 2012-03-08 13:31:40
@MarekGrzenkowicz - 這將解釋它。雖然OP說他檢查過,他們是ascii 32(空間) – AdaTheDev 2012-03-08 13:36:28
讓我們拭目以待OP是否回覆您的評論。對我來說,提示是第一個查詢返回6,而字符串看起來比那個長。 – 2012-03-08 13:46:27
你可以仔細檢查它們實際上是空格嗎?正如@MarekGrzenkowicz所建議的那樣,如果它們是可以解釋它的標籤...... – AdaTheDev 2012-03-08 13:39:28