You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

只读数据库中通过UNION为Reason字段添加前缀的SQL问题

给UNION查询的Reason字段添加指定前缀的解决方案

很简单,你只需要在两个SELECT语句里分别对要返回的Reason字段做字符串拼接,把对应的前缀和原字段值连起来就行。下面分几种常见数据库的情况给你具体代码:

适用于MySQL、PostgreSQL、SQL Server 2012及以上版本

用CONCAT()函数来完成字符串拼接:

SELECT cust_id, CONCAT('Type ', creditcode) AS 'Reason' 
FROM publishers 
WHERE creditcode = 'D' 
UNION 
SELECT cust_id, CONCAT('Code ', jobtype) AS 'Reason' 
FROM bookjobs 
WHERE jobtype = 'R';

(顺便提一句:通常判断字段等于某个值用=比IS更规范,IS一般用来判断NULL或者布尔值,当然有些数据库里IS 'D'也能运行,但换成=兼容性更好)

适用于Oracle数据库

Oracle支持用||操作符直接拼接字符串:

SELECT cust_id, 'Type ' || creditcode AS 'Reason' 
FROM publishers 
WHERE creditcode = 'D' 
UNION 
SELECT cust_id, 'Code ' || jobtype AS 'Reason' 
FROM bookjobs 
WHERE jobtype = 'R';

补充说明

  • 如果你的业务场景允许返回重复的记录(比如同一个cust_id可能在两个表中都有符合条件的数据),建议把UNION换成UNION ALL,这样查询效率会更高,因为UNION会额外做一次去重操作。
  • 因为是只读数据库,这些拼接操作都是在查询时计算的,不会修改原表数据,完全符合你的使用场景。

内容的提问来源于stack exchange,提问作者Floating Tiki Hut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:32:05