2016-09-13 1 views
0

eine SQL-Tabelle hat ein Feld mit dem Namen:SQL SELECT wie - das nur 1 Wort

image_colors 

Der Wert dieses Feldes eine Reihe von unterschiedlichen Farben sein kann, - Beispiel:

green red blue white 

wenn ich für eine bestimmte Farbe zu suchen, die ich benutze:

SELECT * 
FROM `gallery_images` 
WHERE `image_colors` LIKE '%green%' 

In diesem Fall den Wert:

green red blue white 

enthält grün und wird ausgewählt.

Frage: nur 1 Wort

Ist es möglich, mit SQL mit nur Werte zu finden:

green 
+1

welche RDBMS ???? – Praveen

+0

Das scheint wie MySQL, oder? –

+0

Suchen Sie nach Werten, die kein Leerzeichen enthalten? Ich gehe davon aus, dass Sie mehr als nur grün suchen. – shawnt00

Antwort

1

Ja, verwenden Sie einfach Gleichheitsvergleich nur Werte auswählen green passend:

select * 
from gallery_images 
where image_colors = 'green' 

Anmerkungen:

  • Backticks sind nicht in Ihrem Fall notwendig und should be avoided wenn nicht
  • benötigt, sollten Sie wahrscheinlich für Ihr Datenmodell ändern many-to-many mit colors Wörterbuch Tabelle und Verknüpfungstabelle zwischen gallery_images und colors Ihren Daten zu normalisieren und Lookups machen schneller
0

Try

SELECT * 
FROM gallery_images 
WHERE trim(image_colors)= 'green' 
0

Ihre vorhandene Abfrage zu verwenden, auch für einzelnes Wort arbeiten. Keine Änderung des Einzelwortwerts im Suchfeld erforderlich.

Aber natürlich wird diese Abfrage die Leistung Ihrer Anwendung verschlechtern.

Anstatt mehrere Werte in einer einzelnen Spalte zu speichern, ist es besser, eine andere Tabelle zu erstellen, in der Farben in Form von Ganzzahl als mehrere Zeilen gespeichert werden.

+0

OP muss nach Werten suchen, die nur 'grünes' Wort enthalten. –

0

Verwenden Sie den Like-Operator nicht, wenn Sie Datensätze mit nur 'grüner' Farbe wünschen.

select * 
from gallery_images 
where image_colors = 'green'