2016-11-29 1 views
0

Ich habe ein Feld in meiner Datenbank bekommt, die durch Kommata getrennte ganze Zahlen, zum Beispiel enthält:Wie finde ich die Datensätze mit einem durch Kommas getrennten Wert?

"4,6,18,26,29,34" 

Ich brauche eine SQL-Abfrage zu erstellen, die den Datensatz zurück, die eine bestimmte gegebene ganze Zahl enthält, zum Beispiel 6 , so ist meine aktuelle Abfrage wie folgt:

SELECT * FROM mytable WHERE CSVField LIKE "%,6,%" 

ich den gewünschten Wert mit Komma umgeben haben 6 passende 26 zu vermeiden aber es, dass meine aktuelle Abfrage wird nicht in dem Feld Match gegen den ersten oder letzten Werte offensichtlich ist, weil das Feld nicht Beginnen oder enden Sie mit einem Komma. Im obigen Beispiel wird es nie 4 oder 34 finden.

Wie kann ich meine Abfrage so schreiben, dass sie macht, was ich will?

+1

http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database -column-really-that-bad/3653574 – e4c5

+1

'WO FIND_IN_SET (6, CSVField)' – Mihai

Antwort

0

können Sie versuchen:

SELECT * FROM mytable WHERE CSVField LIKE "%,6,%" 
         OR CSVField LIKE "6,%" 
         OR CSVField LIKE "%,6" 

Hope you Tisch obwohl recht klein ist.

UPDATE

Mihai Beitrag Folgen, versuchen:

SELECT * FROM mytable WHERE FIND_IN_SET(CSVField,'6') > 0 
+0

Obwohl ich meine Antwort mag (absolut klar für den Leser), wäre Mihais Vorschlag am besten. – FDavidov

Verwandte Themen