0

如何获得列中使用的最大空格数?

例如:

ID   ColumnA
1    xxxxx
2    xxx
10   xxxxxxx

ID 使用 2 个空格,ColumnA 使用 7 个空格。

4

2 回答 2

4

LEN()计算字符串中的字符数。

SELECT MAX(LEN(CAST(ID AS VARCHAR(5)))) MAX_ID_SPACE,
       MAX(LEN(ColumnA)) Max_ColA_Space
FROM   TableName
于 2013-09-24T22:17:02.263 回答
1

Len(exp)以字符为单位给出表达式的长度,减去任何尾随空格 ( 0x20, Ascii SP)。

DataLength(exp)以字节为单位给出表达式的长度,包括任何尾随空格。

如果您使用char,或varchar,唯一真正的区别是是否包含尾随空格,因为/是单字节字符串,并且/无论如何都以字节为单位。binaryvarbinarycharvarcharbinaryvarbinary

如果您使用ncharor nvarchar,它们是双字节字符串,那么每个字符是两个字节,并len()字符返回长度,而datalength()以字节为单位返回长度。你必须考虑到差异。所以...

declare @some_string nvarchar(4000)

select @some_string = max(t.some_column)
from some_table t

declare
  @length_in_chars_excluding_trailing_spaces = len(        @some_string ) ,
  @length_in_chars_including_trailing_spaces = datalength( @some_string ) / 2

应该做你。

应该考虑到固定长度charnchar字段用尾随空格填充到它们的宽度。

于 2013-09-24T23:49:20.983 回答