2017-05-01 14 views
4

ich diese Tabelle haben
SQL-Abfrage Rückkehr leere Menge

| BookID | BookTitle      | NumberOfPages | NoOfCopies | 
+--------+--------------------------------+---------------+------------+ 
|  1 | The Help      |   444 |   4 | 
|  2 | The Catcher in the Rye   |   277 |   10 | 
|  3 | Crime and Punishment   |   545 |   2 | 
|  4 | The Brothers Karamazov   |   795 |   1 | 
|  5 | A Crown of Wishes    |   369 |   12 | 
|  6 | The Fireman     |   752 |   3 | 
|  7 | Fahrenheit 451     |   174 |   9 | 
|  8 | The Hobbit      |   366 |   1 | 
|  9 | Lord of Emperors    |   560 |   4 | 
|  10 | Holy Bible: King James Version |   1590 |   11 | 
---------------------------------------------------------------------------- 

Wenn ich ein Buchtitel einfügen und erwarten, dass es das Buch ID zurückzukehren, es gibt immer eine leere Menge
so weit, ich habe diese Abfragen versucht .-> book_info der Name der Tabelle ist:

select BookID from book_info where ucase(BookTitle) = ' THE HELP% '; 
select BookID from book_info where BookTitle = ' The Help '; 
select BookID from book_info where lcase(trim(BookTitle) = 'the help'; 

aber keiner von ihnen arbeitete.


Hinweis Ich verlasse mich nicht auf SQL in meinem Job.

+1

Sind Sie nach "LIKE"? – Strawberry

+0

sollten Sie wie –

+0

verwenden Es ist das gleiche @ Strawberry. – Arey

Antwort

2

müssen Sie sich wie verwenden, wenn Sie wollen „%“

verwenden, wenn Sie „=“ verwenden müssen Sie sicher, dass es gleich ist. sogar auch Raum

select BookID from book_info where BookTitle LIKE 'THE HELP%'; 
+0

Es hat funktioniert, aber können Sie bitte erklären, warum es getan hat oder mich mit dem SQL-Handbuch verknüpfen, ich würde es schätzen. – Arey

+0

finden Sie hier einfach https://www.w3schools.com/sql/sql_like.asp –

2

Das Problem hierbei ist, mit dem Betreiber zählen Sie verwenden, und der Wert, den Sie sind Funktion, die Sie von ihm erwarten, = Operator überprüft die genaue Übereinstimmung, deshalb Ihre Anfragen keine Datensätze zurückgeben:

select BookID from book_info where ucase(BookTitle) = ' THE HELP% '; 
select BookID from book_info where BookTitle = ' The Help '; 
select BookID from book_info where lcase(trim(BookTitle) = 'the help'; 

Und noch eine Sache, die ist:

MySQL-Abfragen standardmäßig nicht zwischen Groß- und Kleinschreibung.

Sie müssen also die String-Methoden hier nicht hinzufügen, um die Werte zu ändern.

Wir verwenden in der Regel die % mit LIKE nur wie folgt aus:

select BookID from book_info where ucase(BookTitle) LIKE '%THE HELP%'; 

In dieser Abfrage LIKE %THE HELP% alle die Zeichenfolge übereinstimmen THE HELP in ihnen haben;

Verwandte Themen