在只读SQL中的字段之前添加字符串时出现问题

在只读SQL中的字段之前添加字符串时出现问题,sql,Sql,麻烦 将Reason中包含的字段前的“Type”和“Code”添加到只读数据库 原始问题 此处需要使用联合运算符。需要找到特定的creditcode和jobtype,请参阅下面的错误代码 我的代码: SELECT cust_id, creditcode as 'Reason' FROM publishers WHERE creditcode IS 'D' UNION SELECT cust_id, jobtype as 'Reason' FROM bookjobs WHERE jobtype

麻烦

将Reason中包含的字段前的“Type”和“Code”添加到只读数据库

原始问题

此处需要使用
联合
运算符。需要找到特定的creditcode和jobtype,请参阅下面的错误代码

我的代码:

SELECT cust_id, creditcode as 'Reason'
FROM publishers
WHERE creditcode IS 'D'
UNION 
SELECT cust_id, jobtype as 'Reason'
FROM bookjobs
WHERE jobtype IS 'R';
给出:

cust_id     Reason
----------  ----------
A01         R
D04         D
E05         R
然而,需要的是:

cust_id     Reason
----------  ----------
A01         Type R
D04         Code D
E05         Type R

如果您使用的是
PostgreSQL
,您可以按如下操作,其中
|
执行字符串连接。我还添加了排序的
orderby
子句

SELECT
    cust_id, 
    'Code ' || creditcode as 'Reason'
FROM publishers
WHERE creditcode = 'D'

UNION ALL

SELECT 
    cust_id, 
    'Type ' || jobtype as 'Reason'
FROM bookjobs
WHERE jobtype = 'R'

ORDER BY cust_id;
对于
mysql
,您可以使用
CONCAT()
函数:

SELECT
    cust_id, 
    CONCAT('Code ' , creditcode) as 'Reason'

FROM publishers
WHERE creditcode = 'D'

UNION ALL

SELECT 
    cust_id,
    CONCAT('Type ' , jobtype) as 'Reason'

FROM bookjobs
WHERE jobtype = 'R'

ORDER BY cust_id;

如果您使用的是
PostgreSQL
,您可以按如下操作,其中
|
执行字符串连接。我还添加了排序的
orderby
子句

SELECT
    cust_id, 
    'Code ' || creditcode as 'Reason'
FROM publishers
WHERE creditcode = 'D'

UNION ALL

SELECT 
    cust_id, 
    'Type ' || jobtype as 'Reason'
FROM bookjobs
WHERE jobtype = 'R'

ORDER BY cust_id;
对于
mysql
,您可以使用
CONCAT()
函数:

SELECT
    cust_id, 
    CONCAT('Code ' , creditcode) as 'Reason'

FROM publishers
WHERE creditcode = 'D'

UNION ALL

SELECT 
    cust_id,
    CONCAT('Type ' , jobtype) as 'Reason'

FROM bookjobs
WHERE jobtype = 'R'

ORDER BY cust_id;

你可能想要这样的东西:

SELECT cust_id, 'CODE ' || creditcode as Reason
FROM publishers
WHERE creditcode = 'D'
UNION ALL
SELECT cust_id, 'TYPE ' || jobtype as Reason
FROM bookjobs
WHERE jobtype = 'R';
注:

  • |
    是ANSI标准字符串连接运算符。有些数据库有替代方法,如
    CONCAT()
    +
  • 使用
    UNION ALL
    而不是
    UNION
    ——除非您特别想承担删除重复项的开销
  • =
    是SQL中比较值的传统方法,而不是
  • 不要在单引号中包含列别名。仅对字符串和日期常量使用单引号

您可能想要这样的东西:

SELECT cust_id, 'CODE ' || creditcode as Reason
FROM publishers
WHERE creditcode = 'D'
UNION ALL
SELECT cust_id, 'TYPE ' || jobtype as Reason
FROM bookjobs
WHERE jobtype = 'R';
注:

  • |
    是ANSI标准字符串连接运算符。有些数据库有替代方法,如
    CONCAT()
    +
  • 使用
    UNION ALL
    而不是
    UNION
    ——除非您特别想承担删除重复项的开销
  • =
    是SQL中比较值的传统方法,而不是
  • 不要在单引号中包含列别名。仅对字符串和日期常量使用单引号

您正在使用哪些RDBMS?家庭作业?提示:字符串将
'Type'
连接到
jobtype
'code'
连接到
creditcode
。查阅数据库管理系统的文档,了解这是如何实现的。不确定使用的是什么RDBMS或DBMS。将源代码输入CodeRunner,然后单击“检查”查看答案是否正确。这个程序不识别CONCAT,这可能是版本上的一个提示。要是我知道管理系统就好了。你在用什么关系数据库?作业?提示:字符串将
'Type'
连接到
jobtype
'code'
连接到
creditcode
。查阅数据库管理系统的文档,了解这是如何实现的。不确定使用的是什么RDBMS或DBMS。将源代码输入CodeRunner,然后单击“检查”查看答案是否正确。这个程序不识别CONCAT,这可能是版本上的一个提示。但愿我知道管理系统。使用
UNION ALL
,而不是
UNION
。没有理由产生删除重复项的开销。@GordonLinoff-True实际上编辑了我的答案。谢谢你指出:)太谢谢你了!第一个成功了!我还有一个问题,我2分钟前刚刚添加到我的个人资料中。如果我的答案有帮助,为什么不把它标记为答案:)祝你好运!使用
UNION ALL
,而不是
UNION
。没有理由产生删除重复项的开销。@GordonLinoff-True实际上编辑了我的答案。谢谢你指出:)太谢谢你了!第一个成功了!我还有一个问题,我2分钟前刚刚添加到我的个人资料中。如果我的答案有帮助,为什么不把它标记为答案:)祝你好运!你好,戈登,你的源代码创造了奇迹。非常感谢。4分钟前,我修改了我个人资料中的另一个问题,以防你有回答问题的心情。非常感谢。我已经在4分钟前修改了我个人资料中的另一个问题,以防你有回答问题的心情。