我开始学习Oracle PL/SQL,并下载了带有相同示例和问题的Oracle Database 10g Express。
其中一个问题我无法解决。
问题是:
编写SQL查询以检索每个员工的名字、姓氏和代码,其中找到员工的代码如下所示:
首先删除所有字符“i”和“l”的出现,然后将姓名的前六个字母、破折号“-”和姓氏的最后六个字符连接在一起,其中代码的第一个和最后一个字符应该是大写的。如果名字不包含六个字母,则在段尾放置下划线(“”);如果姓氏不包含六个字母,则在段首放置下划线(“”)。按照姓和名的顺序对列表进行排序。 输出必须如下所示: 我写了一些东西,但它完全错误且不清晰。我应该修改哪些部分?
这是我的输出(错误)
其中一个问题我无法解决。
问题是:
编写SQL查询以检索每个员工的名字、姓氏和代码,其中找到员工的代码如下所示:
首先删除所有字符“i”和“l”的出现,然后将姓名的前六个字母、破折号“-”和姓氏的最后六个字符连接在一起,其中代码的第一个和最后一个字符应该是大写的。如果名字不包含六个字母,则在段尾放置下划线(“”);如果姓氏不包含六个字母,则在段首放置下划线(“”)。按照姓和名的顺序对列表进行排序。 输出必须如下所示: 我写了一些东西,但它完全错误且不清晰。我应该修改哪些部分?
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;
这是我的输出(错误)
![在这里输入图像描述](https://istack.dev59.com/AlHZ8.webp)
replace(replace(first_name,'l',''),'i')
中,你实际上是用什么替换 "i
"? - PM 77-1replace(first_name,'l','')
是否返回您期望的结果(通过将其放入自己的列中),然后从那里开始。 - Nick.McDermaid