最近我在查詢中使用len()來查找查詢的長度時遇到了一個問題,len()不計算值中的尾隨空格。但是datalength()也會計算尾部空格。在sqlserver 2005中len()Vs datalength()
這是否意味着如果我正在做一些處理值的實際長度的操作,那麼我必須在len()上使用dalalength()。例如:如果我需要一個特定值的值是10個字符長度。即如果值是3個字符長度,我必須給它添加7個空格。
Regards
最近我在查詢中使用len()來查找查詢的長度時遇到了一個問題,len()不計算值中的尾隨空格。但是datalength()也會計算尾部空格。在sqlserver 2005中len()Vs datalength()
這是否意味着如果我正在做一些處理值的實際長度的操作,那麼我必須在len()上使用dalalength()。例如:如果我需要一個特定值的值是10個字符長度。即如果值是3個字符長度,我必須給它添加7個空格。
Regards
是的,這正是你必須做的。如果你想獲得不包含空格的字符數,你可以使用LEN()
函數,而在所有其他情況下使用DATALENGTH()
。
即使LEN()
文檔有一個信息,要得到字節來表示分機的號碼,你應該使用DATALENGTH()
這裏是鏈接到MSDN文檔:
小心。 DATALENGTH返回使用的字節數,而不是字符數。
len個計數使用不需要存儲的字符數,這將更加明顯,當你使用nvarchar的,而不是爲varchar
LEN不計尾隨空格或者
看看這個
declare @v nchar(5)
select @v ='ABC '
select len(@v),datalength(@v)
和輸出爲len爲3,而輸出爲數據長度= 10
只需使用替換():
SELECT LEN(REPLACE(N'4 Trailing Spaces: ', ' ', '_'))
這將用LEN()將實際計數的字符替換尾隨空格。
DataLength()的問題是你必須跟蹤你的字符串是Unicode(nChar,nVarChar)還是ASCII(Char,VarChar)來知道你是否還需要將Unicode字符串的數據長度除以2。
我正要使用Len(替換('blah blah','','_') 建議,當它給我帶來的效果可能會更好。我做
LEN( '等等等等' + '') - 1
和LEN()確實不** ** ALSO計數空格....... – 2009-07-20 05:27:03
LEN(N'testing一個兩三個,沒什麼g但是測試')返回41個字符,包括空格(和DATALENGTH(),返回82) – 2009-07-20 05:27:35