我需要知道我使用什么SQL语句来生成输出,如果一个单元格包含null,那么它会从它旁边的列中提取信息。
更好地解释:我有三个表,表1包含7列,表2包含6列,表3包含4列。
我需要从表1中选择1列,然后选择一个破折号,然后从另一个表中选择3列,后跟破折号,然后从另一个表中选择另一列,但是如果列中包含null,则必须将值替换为破折号' - '。
这是我到目前为止的代码:
idx >= maxlimit
我确实尝试过:
SELECT
Episode_Name, '-', Pnr_FName, Pnr_LName, Guest, '-', Car_Make
FROM
EPISODES, PRESENTERS, CARS
我将它绑定在(CASE WHEN Guest = null THEN ''
END EPISODE)
语句中,但它不起作用。
任何帮助将不胜感激!感谢
答案 0 :(得分:1)
您无法使用NULL
运算符检查=
的列值,因为结果也是NULL
。相反,您应该使用IS NULL
和IS NOT NULL
。但出于可读性考虑,我会使用COALESCE
代替CASE
语句。
使用COALESCE
:
SELECT CONCAT(COALESCE(Episode_Name, ' '),
'-',
COALESCE(Pnr_FName, ' '),
COALESCE(Pnr_LName, ' '),
COALESCE(Guest, ' '),
'-',
COALESCE(Car_Make, ' '))
FROM EPISODES, PRESENTERS, CARS
顺便说一下,您应该使用显式连接语法,而不是在FROM
子句中使用逗号,例如。
FROM EPISODES e INNER JOIN PRESENTERS p
ON e.col = p.col
答案 1 :(得分:0)
我确实尝试过:(如果客人= null那么'' END EPISODE)
试
case when guest is null then '' end
您无法比较空值,要检查是否存在空值,您必须使用IS NULL
..