MYSQL查询帮助 - Substring和Instring

时间:2015-05-10 19:39:37

标签: mysql sql

我需要帮助编写查询以从表中获取一些数据。我正在尝试编写一个查询,它将选择名称中包含“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)
);

3 个答案:

答案 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)

使用SUBSTRINGLENGTHINSTR

SELECT
  Title,
  LENGTH(Title) as Length,
  SUBSTRING(Title,INSTR(Title, 'bill'),LENGTH(Title)-INSTR(Title, 'bill')) as Rest
FROM
  Book
WHERE
  Title like '%bill%'

Tested - SQL Fiddle