怎样通过sql,将A列和B列作为判断,A列为空时,将B列的数据转换到A列显示,如果B列的数据为空,还是保持原样,这个sql要怎么写?

问题遇到的现象和发生背景 :表1中有A列和B列,id列,我想判断当A列为空时,将B列的数据转换到A列显示,如果B列的数据为空,还是保持原样,这个sql要怎么写?

我直接给测试sql:

--1.创建表
CREATE TABLE TEST_AB(COL_A VARCHAR(100),
                     COL_B VARCHAR(100));
 
--2.插入测试数据                   
INSERT INTO TEST_AB VALUES('猪','PIG'); 
INSERT INTO TEST_AB VALUES('狗','DOG');
INSERT INTO TEST_AB VALUES(NULL,'CAT');
COMMIT;


-- CAT那里的中文是null,所以COL_A那里会变成英文
SELECT
     CASE
       WHEN COL_A IS NULL THEN
         COL_B
       ELSE COL_A END AS COL_A,
     COL_B
  FROM TEST_AB T

img

是什么数据库?不同数据库空值函数不一样,oracle是nvl,mysql是ifnull,另外还有个通用的coalesce函数。
或者,可以使用更加通用的case when

select id,
          case when a is null then b else a end as a,
          b 
from
select ifnull(name,name2) from student

我来补充一个oracle的吧
SELECT DECODE(A,NULL,DECODE(B,NULL,A,B),A) FROM 表;


Select (Case When A Is Not Null Then A
When A Is Null Then B
End
) As A From Table