Axel Richter: Suchabfrage funktioniert bei einem übergebenen POST-Wert nicht

Beitrag lesen

Hallo,

SELECT * FROM model, company, number, type

WHERE number.number = 'A12345'
AND number.number LIKE '%%%'


> ==> Funktioniert!  
> 'A12345' wird ausgegeben.  

Ja, denn der Feldinhalt kann durchaus gleich "A12345" UND wie "%%%" sein, denn wie "%%%" ist alles Mögliche ;-).  

>   
> ~~~sql

SELECT * FROM model, company, number, type  

> WHERE number.number = '%%%'  
> AND number.number LIKE 'A12345'  
> 

==> Funktioniert nicht!
MySQL lieferte ein leeres Resultat zurück.

Ja, denn _kein_ Feldinhalt kann gleich "%%%" UND wie "A12345" sein, denn wenn der Feldinhalt gleich "%%%" ist, dann stehen dort drei "%"-Zeichen drin und eben _nicht_ "A12345".

Liegt es an dem grundsätzlichen Dilemma, dass ein exakter Wert zwar einem LIKE-Wert entsprechen kann, aber ein LIKE-Wert nicht einem Exakten?

Nein.

Ich ging bisher davon aus, dass die Erfüllung einer Bedingung ausreicht, um die Abfrage auszugeben?

Nein, nicht bei UND-Verknüpfungen. Wozu, denkst Du, gibt es ODER-Verknüpfungen?

Aber wenn ohnehin nur _entweder_ exact ODER partial gefüllt per POST zurückkommen, warum baust Du dann nicht je Fall per PHP exakt je ein SQL-Statement zusammen? Also wenn exact gefüllt zurückkommt, dann ...WHERE number.number = 'A1234' und wenn partial gefüllt zurückkommt, dann ...WHERE number.number LIKE '%A12%'.

Und bitte beachte dedlfix' Hinweis auf die kontextgerechte Behandlung.

viele Grüße

Axel