snorri: SQL: SELECT nach einem Einzelwert in einem SET-Feld?

Beitrag lesen

Hi alle,

in einer kleinen Datenbank, die Personen beinhaltet, habe ich die Fremdsprachenkenntnisse in einem SET-Feld gespeichert:

CREATE TABLE person (
  sprache set('Englisch','Deutsch','Französisch'),
  ...
)

D.h. jede Person kann eine oder mehrere Sprachen (oder auch keine davon, theoretisch). In der Datenbank stehen jetzt drei Personen: A kann Deutsch und Französische, B kann Deutsch und Englisch, C Englisch und Französisch.

Wie muss das SELECT-Statement aussehen, damit mir alle Personen ausgegeben werden, die Deutsch sprechen?

SELECT * FROM person WHERE sprache='Deutsch'
... gibt nur die aus, die _ausschließlich_ Deutsch sprechen.

SELECT * FROM person WHERE 'Deutsch' IN (sprache)
... ebenfalls, seltsamerweise.

SELECT * FROM person WHERE sprache LIKE '%Deutsch%'
... funktioniert, scheint mir aber nicht das Gelbe vom Ei zu sein (würde z.B. auch Leute ausgeben, die "Schweizer Deutsch" sprechen, um ein etwas bemühtes Beispiel zu verwenden).

Für so etwas muss es doch eine vernünftige Syntax geben, oder?

Danke für alle Tipps!

-- snorri