在SQL Plus中创建SUBSTR

时间:2015-02-13 00:23:10

标签: sql oracle

这是我遇到问题的作业问题:

使用BOOKS表和SUBSTR功能,创建一个查询,该查询将返回书籍ISBN代码列表和所有计算机书籍的书名。格式化ISBN代码以显示为9-999-99999-9(例如,1059831198将显示为1-059-83119-8)

到目前为止,我的代码如下:

SELECT ISBN, Title,Category
SUBSTR(ISBN,1,3,4,1 )
FROM BOOKS;
WHERE Category = 'Computer';

我得到的错误是:     第2行的错误:     ORA-00923:未找到FROM关键字

在玩了一会儿之后,我意识到我不允许在我的SUBSTR中有那么多数字来分割ISBN,但我已经查阅了我的教科书和在线版本无法弄清楚如何在所有这些数字之间用那么多破折号来SUBSTR

此外,我尝试用两个数字来完成方程式并且它有效,但是我的WHERE子句给了我一些问题,我不知道为什么即使我研究了错误,我也不理解。我所在的课程是SQL * Plus的入门课程,所以这是我正在做的非常基本的事情,但我生活中从未做过任何关于我做错了什么的输入我已经知道我不是允许把那么多数字放进去,所以我想如果有人能指出我如何完成这个子串的正确方向。

3 个答案:

答案 0 :(得分:0)

您的解决方案的模板可能是:

SELECT Title
       -- reformatted isbn deliberately omitted - replace this line with your own work
  FROM BOOKS
 WHERE Category = 'Computer'
     ;

注意: 将此答案视为希望从高级格式化选项中受益的评论...

答案 1 :(得分:0)

您必须逐段构建字符串,例如

SUBSTR(ISBN,1,1) || '-' || SUBSTR(ISBN,2,3 ) || '-'

答案 2 :(得分:0)

我终于找到了自己问题的答案。代码如下:

SELECT Title,Category,
SUBSTR(ISBN, 1,1) || '-' || 
SUBSTR(ISBN, 3,3) || '-' || 
SUBSTR(ISBN, 5,5) || '-' || 
SUBSTR(ISBN, 10,1)
FROM BOOKS
WHERE Category = 'COMPUTER';

感谢大家的有益评论,非常感谢并帮助我最终解决了我的问题:)