在MySQL中使用此查询时出错。
这是查询。
select course_id, sec_id, ID,
decode(name, NULL, '−', name)
from (section natural left outer join teaches)
natural left outer join instructor
where semester='Spring' and year=2010
这是错误错误代码:1305。FUNCTION sql_university decode不存在
是的,在mySQL中不存在DECODE。有一个类似的ELT函数,但我不认为完全相同,而且你的用例也不需要它。COALESCE可能是你想要的,但这里有四种不同的方法:
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f9d37a049fc503b1b4848b7e278f2e34
create table test (name varchar(20));
insert into test(name) values('test'), ('jim'), (null);
select * from test;
SELECT name,
coalesce(name, '-') as method1,
if(name is null, '-', name) as method2,
case when name is null then '-' else name end as method3,
elt((name is null) + 1, name, '-') as method4
FROM test
COALESCE返回第一个非null参数。IF不符合ANSI,但它允许条件逻辑,就像CASE一样(CASE符合ANSI,所以您可以将它从一个rdbms移植到另一个rdbms(。
最后是ELT。它只返回与提供的索引匹配的参数。因此,您可以使用ISNULL来测试名称,如果是,则返回1,如果不是,则返回0。如果索引小于1,ELT将返回null,因此必须在is null检查中添加一个。这肯定没有其他选项那么简单,我不会为了做一个简单的null检查而经历所有这些。如果你只想这么做,那么合作就是你的选择。