我正在尝试向字段(下面的 ji.issuenum)添加一个前缀,即十进制(18,0)。这样“4”就变成了“PROJECT-4” 正如我从示例中发现的,只需用 + 添加它就足够了:
SELECT 'PROJECT-' + ji.issuenum AS project_id,
c.cname AS component_name,
pri.pname AS issue_priority,
ist.pname AS issue_status,
ji.summary AS issue_summary,
ji.created AS created,
ji.updated AS updated,
ji.resolutiondate AS resolutiondate
FROM project p
left outer join jiraissue ji
ON ji.project = p.id
left outer join priority pri
ON ji.priority = pri.id
left outer join issuestatus ist
ON ji.issuestatus = ist.id
left outer join component c
ON c.project = p.id
WHERE p.pname = 'Project'
AND Year(resolutiondate) = Year(current_date - interval 1 month)
AND Month(resolutiondate) = Month(current_date - interval 1 month)
GROUP BY ji.issuenum;
但是它不起作用。 我还尝试在加入之前将其转换为 char:
SELECT 'PROJECT-' + Cast( ji.issuenum AS CHAR(20)) AS project_id,
c.cname AS component_name,
pri.pname AS issue_priority,
ist.pname AS issue_status,
ji.summary AS issue_summary,
ji.created AS created,
ji.updated AS updated,
ji.resolutiondate AS resolutiondate
FROM project p
left outer join jiraissue ji
ON ji.project = p.id
left outer join priority pri
ON ji.priority = pri.id
left outer join issuestatus ist
ON ji.issuestatus = ist.id
left outer join component c
ON c.project = p.id
WHERE p.pname = 'Project'
AND Year(resolutiondate) = Year(current_date - interval 1 month)
AND Month(resolutiondate) = Month(current_date - interval 1 month)
GROUP BY ji.issuenum;
还有其他方法可以做到这一点吗?
谢谢
最佳答案
在mysql中使用CONCAT很可能会解决你的问题。它设置为使用字符串作为输入,然后连接它们,但如果您包含数值,它会将这些值转换为其非二进制字符串等效项。这适用于整数和小数。
CONCAT('PROJECT-',TRUNCATE(ji.issuenum, 0)) AS Project_ID
我将 TRUNCATE 添加到查询中,因为我意识到如果 ji.issuenum 的十进制值为 4.0,您仍然会得到“PROJECT-4.0”。 CONCAT 不会舍入或修剪值,它只是“按原样”显示它们,甚至作为等效字符串。 Truncate(... , 0) 将在小数点右侧显示 0 位。
Here是 CONCAT 的一些 mysql 特定文档。
关于mysql - 为sql结果添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37620896/