mysql - 为sql结果添加前缀

标签 mysql sql

我正在尝试向字段(下面的 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/

相关文章:

java - 如何在源代码中引用预定义的数据库条目

java - HHH000342 : Could not obtain connection to query metadata : Access denied for user

php - 如何执行这个更新查询?

php - 如何提取json数据并插入mysql php

php - 将php json文件导入swift

sql - 从现有的 MS Access 表自动生成 SQL

sql - 如何判断一个员工是不是经理?

sql - 在 SQL 中计算百分位数

sql - 一个(稍微复杂的)SQL 查询?

mysql - 查找 mysql 结果末尾的列的 Total Sum 作为 All