查询结果返回单引号

时间:2018-09-24 13:01:56

标签: mysql sql

我有以下查询,返回最小值,最大值,平均值和额外值。有时,在extra_value结果列中,它返回一个单引号',然后在应用程序中稍后破坏我的代码。

 SELECT MIN(IF (contact_timestamp <= '2018-09-24 12:10:37', contact_timestamp, NULL)) AS min_value,
     MAX(IF (contact_timestamp <= '2018-09-24 12:10:37', contact_timestamp, NULL)) AS max_value,
     AVG(IF (contact_timestamp <= '2018-09-24 12:10:37', MINUTE(contact_timestamp) * 60 + SECOND(contact_timestamp), NULL)) AS avg_value, 
     SUM(IF (contact_timestamp <= '2018-09-24 12:10:37', 1, 0)) AS count_value,
     CONCAT("'", GROUP_CONCAT(IF(contact_timestamp > '2018-09-24 12:10:37', id, NULL) SEPARATOR "' , '"), "'") AS extra_value
 FROM log_device_contact
 WHERE contact_timestamp > DATE_ADD('2018-09-24 12:10:37', INTERVAL -8 DAY)

有时服务器结果列的结果如下:

  '31504708' , '31504709' , '31504710' , '31504711' , '31504712' , '31504713' , '31504714' , '31504715' , '31504716' , '31504717' , '31504718' , '31504719' , '31504720' , '31504721' , '31504722' , '31504723' , '31504724' , '31504725' , '31504726' '

有时它们并不取决于我在哪个表上运行查询。如何防止多余的报价永远发生?

2 个答案:

答案 0 :(得分:1)

CONCAT("'", GROUP_CONCAT(IF(contact_timestamp > '2018-09-24 12:10:37', id, NULL) SEPARATOR "' , '"), "'") AS extra_value

您要在CONCAT中添加最后的单引号。如果您这样做会发生什么?

CONCAT("'", GROUP_CONCAT(IF(contact_timestamp > '2018-09-24 12:10:37', id, NULL) SEPARATOR "' , '")) AS extra_value

没有最后一个单引号吗?会再次发生吗?

答案 1 :(得分:1)

将每个用单引号引起来,而不是使用分隔符:

249998

请注意,没有 GROUP_CONCAT( (CASE WHEN contact_timestamp > '2018-09-24 12:10:37' THEN CONCAT('''', id, '''') END) SEPARATOR ',') AS extra_value 作为参数的CONCAT()。唯一的双引号添加在ID周围。唯一的逗号在值之间。