Учитывая приведенные ниже операторы SQL, я ожидаю, что результат запроса будет:
|testX|5|
|XXXXX|5|
Это потому, что столбец является символом (5), и я ожидаю, что он вставит пробелы в конце, чтобы заполнить оставшееся пространство в столбце, поскольку вставленные значения меньше пяти символов. Однако запрос фактически дает следующий результат:
|test|4|
|X|0|
Может кто-нибудь, пожалуйста, объясните это. Почему значения не дополняются конечными пробелами, чтобы они заполняли столбец длины 5? Почему функция REPLACE вставляет один X для второго значения, когда оно является полностью пустой строкой?
USE Test;
GO
SET ANSI_PADDING ON;
GO
CREATE TABLE BlankTest
(
Value char(5) NOT NULL
);
GO
INSERT INTO BlankTest (
Value
) VALUES (
'test'
);
GO
INSERT INTO BlankTest (
Value
) VALUES (
''
);
GO
SELECT REPLACE(Value, ' ', 'X'), LEN(Value)
FROM BlankTest;
GO
DROP TABLE BlankTest;