concat 使用空白 space 作为分隔符标记问题而不是空白 space

concat using a blank space as separator marks questions instead of blank space

这个查询

SELECT  Empleados.U_Sociedad as Sociedad, 
    Empleados.empID AS empId, 
    CONCAT(Empleados.firstName , ' ' , Empleados.middleName , ' ' , Empleados.lastName)  as Nombre,
    sum(
        case 
            when durtype = 'm' 
            then duration/ 60 
            else duration 
        end
        ) as Realizado ,
    0 as Planificado,
    'Horas' as Concepto 
FROM OHEM Empleados   
JOIN OUSR Usuarios ON Empleados.U_CODEMPL = Usuarios.USER_CODE   
JOIN OCLG Horas ON Usuarios.INTERNAL_K = Horas.AttendUser   
WHERE(Horas.U_Fase ='w0000005') 
group by U_Sociedad, empID ,CONCAT(Empleados.firstName , ' ' , Empleados.middleName , ' ' , Empleados.lastName)

显示这个

我不明白为什么“ ”被翻译成“?”

我的想法好吗?

问候

您在示例中 post 编辑的空格是 CHAR(63) 的非真实空格:CHAR(32)。

我copy/pasted的空格直接来自你的post。请注意:SELECT ASCII(' ') Retutns 63. 我像这样将空格复制到 CONCAT 中:SELECT CONCAT('a', ' ' , 'a', ' ' , 'x'); returns: 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');