在哪里不能显示正确的结果

时间:2015-02-03 14:25:28

标签: sql where sql-like clause

我的查询中有一个WHERE LIKE子句,但没有显示正确的结果。

我的查询如下;

SELECT book.isbn, book.title, 
copy.code, copy.duration,
student.no, student.name
FROM book
INNER JOIN copy
ON copy.isbn = book.isbn
INNER JOIN loan
ON loan.code = copy.code
INNER JOIN student
ON student.no = loan.no
WHERE copy.code LIKE 1013 OR 3011

我尝试插入%,但我收到了错误消息。此时,将显示包含整数组合的所有结果。我期待只显示“代码”完全等于1013和3011的结果。

4 个答案:

答案 0 :(得分:2)

完全匹配使用IN

WHERE copy.code in (1013, 3011)

=

WHERE copy.code = 1013 or copy.code = 3011

答案 1 :(得分:1)

请尝试这种方式,注意LIKE用于字符串值而非数字

SELECT book.isbn, book.title, 
  copy.code, copy.duration,
  student.no, student.name
FROM book
 INNER JOIN copy
ON copy.isbn = book.isbn
 INNER JOIN loan
ON loan.code = copy.code
 INNER JOIN student
ON student.no = loan.no
 WHERE copy.code=1013 OR copy.code=3011

答案 2 :(得分:0)

如果copy.code是varchar,您可以使用以下行之一

WHERE copy.code LIKE '1013' OR copy.code LIKE '3011'
WHERE copy.code = '1013' OR copy.code = '3011'
WHERE copy.code in('1013','3011')

如果copy.code是一个数字,你可以使用其中一个

WHERE copy.code = 1013 OR copy.code = 3011
WHERE copy.code in (1013,3011)

答案 3 :(得分:0)

除了LIKE对于文本而不是数字的评论中的正确观察,重要的是要知道当你在SQL(或任何编程语言)中使用OR时,你必须指定整个其他条件,而不只是其他值:

WHERE copy.code = 1013 OR copy.code = 3011

所以你两次提到copy.code =部分,否则计算机不理解你对3011的意思。