我开始学习 Oracle PL/SQL,并下载了带有相同示例和问题的 Oracle Database 10g Express。
有一个我无法解决的问题。
问题是:
编写一个 SQL 查询来检索每个员工的名字、姓氏和代码,其中找到员工的代码如下:首先删除所有出现的字符“i”和“l”,然后连接第一个姓名的六个字母、一个破折号“-”和姓氏的最后六个字符,其中只有代码的第一个和最后一个字符应为大写。如果名称不包含六个字母,则在片尾加下划线(“<em>”);如果姓氏不包含六个字母,则将下划线(“</em>”)放在乐曲的开头。先按姓氏排序,再按姓名排序。
输出必须是这样的
我写了一些东西,但完全错误且不清楚。我应该修理哪些部分?
SELECT employees.first_name, employees.last_name,
replace(replace(first_name,'l',''),'i'),
initcap(substr(rpad(employees.first_name,6,'_'),1,6)) || '-' ||
case when length(employees.last_name)>4
then lower(substr(employees.last_name,-5,4))
else lower(substr(lpad(employees.last_name,5,'_'),-5,4)) end ||
upper(substr(employees.last_name,-1,1)) code
FROM employees
ORDER BY last_name, first_name;
这是我的输出(错误)