2013-09-24 2 views
0

Как получить максимальное количество пробелов, используемых в столбце?Geting varchar width столбца, который фактически используется

Например:

ID ColumnA 
1 xxxxx 
2 xxx 
10 xxxxxxx 

ID использует 2 пространств и Columna использует 7 мест.

+0

Когда вы говорите «пробелы», вы имеете в виду персонажей? И включая конечные фактические пространства? –

ответ

4

LEN() подсчитывает количество символов в строке.

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

Может понадобиться 'SELECT MAX (LEN (LTRIM (RTRIM (ColumnA))))' –

+0

У меня есть другой похожий вопрос здесь: http://stackoverflow.com/questions/18993145/counting-spaces-before-and-after-a -decimal-point – cdub

+1

'LEN' подсчитывает количество символов в строке правильно, если эта строка не содержит конечных пробелов. Промежуточные пробелы игнорируются. Является ли это желаемым поведением или нет для ОП, который знает. –

1

Len(exp) дает длину выражения в символов, за вычетом хвостовых пробелов (0x20, Ascii SP).

DataLength(exp) дает длину выражения в байт, включая любые завершающие пробелы.

Если вы используете char, varchar, binary или varbinary, единственным отличием является ли или не включены завершающие пробелы, так как char/varchar являются строками символов однобайтные и binary/varbinary Количество в байтах в любом случае.

Если вы используете nchar или 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 

должно быть.

Следует учитывать, что поля фиксированной длины char и nchar заполняются по их ширине с помощью пробелов.

Смежные вопросы