获取实际使用的列的varchar宽度

时间:2013-09-24 22:15:26

标签: sql sql-server-2005

如何获取列中使用的最大空格量?

例如:

ID   ColumnA
1    xxxxx
2    xxx
10   xxxxxxx

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

2 个答案:

答案 0 :(得分:4)

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

SELECT MAX(LEN(CAST(ID AS VARCHAR(5)))) MAX_ID_SPACE,
       MAX(LEN(ColumnA)) Max_ColA_Space
FROM   TableName

答案 1 :(得分:1)

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

DataLength(exp)给出 bytes 中表达式的长度,包括任何尾随空格。

如果您使用charvarcharbinaryvarbinary,唯一真正的区别在于是否包含尾随空白,因为char / varchar是单字节字符串,binary / varbinary以字节为单位计算。

如果您使用的是ncharnvarchar,它们是双字节字符串,那么每个字符都是两个字节,len()返回< em> characters ,而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字段用尾随空格填充到它们的宽度。