Пробелы, которые вы разместили в своем примере, являются не настоящими пробелами CHAR (63): CHAR (32).
Копирую / вставляю пробелы прямо из вашего поста. Обратите внимание, что это: SELECT ASCII(' ')
Retutns 63. Я скопировал пробелы в CONCAT следующим образом: SELECT CONCAT('a', ' ' , 'a', ' ' , 'x');
возвращает: a? A? X
Вы можете явно указать CHAR(32)
пробелов, например, так:
SELECT CONCAT('a', CHAR(32) , 'b', CHAR(32), 'c');
Или, чтобы не вводить CHAR (32) снова и снова, вы можете сделать это:
SELECT CONCAT('a',Sp,'b',Sp, 'c')
FROM (VALUES(CHAR(32))) AS s(Sp);
ИЛИ, если вы SQL Server 2017+, вы можете использовать CONCAT_WS следующим образом :
SELECT CONCAT_WS(CHAR(32),'a','b','c');