这个查询
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)
我不明白为什么将''转换为'?'
艾米的主意好吗?
问候
您在示例中发布的空格不是CHAR(63)的真实空间:CHAR(32)。
我直接从您的帖子中复制/粘贴了空格。请注意:SELECT ASCII(' ')
Retutns63。我将空格复制到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');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句