Как получить максимальное количество пробелов, используемых в столбце?Geting varchar width столбца, который фактически используется
Например:
ID ColumnA
1 xxxxx
2 xxx
10 xxxxxxx
ID использует 2 пространств и Columna использует 7 мест.
Как получить максимальное количество пробелов, используемых в столбце?Geting varchar width столбца, который фактически используется
Например:
ID ColumnA
1 xxxxx
2 xxx
10 xxxxxxx
ID использует 2 пространств и Columna использует 7 мест.
LEN()
подсчитывает количество символов в строке.
SELECT MAX(LEN(CAST(ID AS VARCHAR(5)))) MAX_ID_SPACE,
MAX(LEN(ColumnA)) Max_ColA_Space
FROM TableName
Может понадобиться 'SELECT MAX (LEN (LTRIM (RTRIM (ColumnA))))' –
У меня есть другой похожий вопрос здесь: http://stackoverflow.com/questions/18993145/counting-spaces-before-and-after-a -decimal-point – cdub
'LEN' подсчитывает количество символов в строке правильно, если эта строка не содержит конечных пробелов. Промежуточные пробелы игнорируются. Является ли это желаемым поведением или нет для ОП, который знает. –
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
заполняются по их ширине с помощью пробелов.
Когда вы говорите «пробелы», вы имеете в виду персонажей? И включая конечные фактические пространства? –