我需要帮助编写查询以从表中获取一些数据。我正在尝试编写一个查询,它将选择名称中包含“bill”的所有书名,并显示书名,标题长度以及“bill”后面的标题部分。我知道你应该使用substring和instring函数,但我继续遇到语法错误和/或错误的输出
书表如下
CREATE TABLE Book(
ISBN CHAR(13),
Title VARCHAR(70) NOT NULL,
Description VARCHAR(100),
Category INT,
Edition CHAR(30),
PublisherID INT NOT NULL,
constraint book_ISBN_pk PRIMARY KEY (ISBN),
constraint book_category_fk FOREIGN KEY (Category) REFERENCES Category(CatID),
constraint book_publisherID_fk FOREIGN KEY (PublisherID) REFERENCES Publisher(PublisherID)
);
答案 0 :(得分:1)
这是一个标准的SQL版本,afaik mysql也应该支持这些功能:
select
Title
,char_length(Title)
,substring(Title from position('bill' in Title) + 4)
from book
where Title like '%bill%'
答案 1 :(得分:0)
使用regexp进行匹配,如下所示:
select title from books where title regexp '*book*'
至于你想要使用什么,在我的书中,你应该只使用得到所需结果的东西。如果有的话,优化会在稍后进行。
答案 2 :(得分:0)
使用SUBSTRING
,LENGTH
和INSTR
SELECT
Title,
LENGTH(Title) as Length,
SUBSTRING(Title,INSTR(Title, 'bill'),LENGTH(Title)-INSTR(Title, 'bill')) as Rest
FROM
Book
WHERE
Title like '%bill%'