SQL Abfrage für Kondition: Platzhalter

Carrear

Erfahrenes Mitglied
Hi Leute, ich habe eine Spalte in einer SQL Tabelle, in welcher Kennzahlen in folgender Form vorhanden sind:

1,[LEERZEICHEN]4,[LEERZEICHEN]14

Um diese gezielt nach einzelnen Zahlen zu Filtern habe ich folgende Abfrage:

PHP:
<?php
$condition = (string) "input_BUNDESLAND like '%, ".$user_bundesland.",%' OR input_BUNDESLAND like '%, ".$user_bundesland."' OR input_BUNDESLAND like '".$user_bundesland.", %'";
?>

Es sind also 3 Konditionen Festgelegt welche Form der Platzhalter in der Spalte haben darf:

1. X,[LEERZEICHEN][IRGENDWAS] ( like '".$user_bundesland.", %' )
2. [IRGENDWAS],[LEERZEICHEN]X,[IRGENDWAS] ( like '%, ".$user_bundesland.",%' )

oder

3. [IRGENDWAS],[LEERZEICHEN]X ( like '%, ".$user_bundesland."' )

Das Problem ist, dass ich für die erste und die letzte Kondition in meiner Auflistung festlegen müsste, dass davor bzw. danach eben NICHTS stehen darf, sonst geht das nicht auf. Gibt es dafür einen speziellen Platzhalter oder wie könnte ich das regeln?

Viele Grüße
 
MySQL?

Jepp, mit REPLACE die Leerzeichen entfernen und mit FIND_IN_SET() den EIntrag suchen
SQL:
.. WHERE FIND_IN_SET('{$user_bundesland}', REPLACE(input_BUNDESLAND, ' ', ''))
 
Zuletzt bearbeitet von einem Moderator:
Nein. Nicht mit FIND_IN_SET()
Damit sucht er einen Wert aus einer Liste die mit komas getrennt ist
FIND_IN_SET(1, '11,2,54,12') findet nix.
Das Problem an deinem SET sind die Leerzeichen. Darum musst du sie zuerst mit REPLACE() entfernen um ein sauberes SET hinzukriegen.

Probiers mit phpMyAdmin oder Heidisql etc aus
SQL:
SELECT FIND_IN_SET('6', REPLACE('1, 5, , 66', ' ', ''))
 
Zuletzt bearbeitet von einem Moderator:
WUAH ^^ Super - das muss man ja auch erstmal wissen. Echt ein super Tipp, den ich sicher auch in Zukunft öfter nutzen kann :)
 

Neue Beiträge

Zurück