带参数和通配符的SQL

时间:2015-02-19 20:30:03

标签: mysql ado delphi-2010

只是想运行一个SQL语句,该语句将一个字母输入到一个文本框中,并返回书籍名称具有相同首字母的结果。例如。如果H进入,那么诸如“快乐的日子”,“天堂”,“希望明天”等书籍将被退回。这是我使用的,但我的DBgrid没有结果。输入字母的文本框是edtBookTitle.text。

 qbook.SQL.Text:='SELECT BookID,BookTitle FROM Book WHERE BookTitle LIKE CONCAT(edtBookTitle.text,"%")';

3 个答案:

答案 0 :(得分:3)

您的LIKE不正确。它应该是

SELECT .... WHERE BookTitle LIKE CONCAT(edtBookTitle.text, '%')

你有一个裸%,它在MySQL中将是算术模运算符,缺少一个操作数。所以你的查询是一个平坦的语法错误。

答案 1 :(得分:0)

SELECT * FROM dbo WHERE someColumn LIKE 'h%';

您可能需要在查询结尾处连接通配符,它​​应该在引号中。

答案 2 :(得分:-1)

这是修补撇号的问题。

qbook.SQL.Text:='SELECT BookID,BookTitle FROM Book WHERE BookTitle LIKE CONCAT("'+edtBookTitle.text+'%")';
 qbook.open;