TQuery: Case-Insensitive SQL Abfrage



  • Hi

    Wie kann ich eine Standard SQL Abrage case - insensitive machen, d.h. bei einem

    SELECT * FROM db_name WHERE spalte1 = 'suchwort'
    

    sollte sowohl 'suchwort' als auch z.B. 'suCHWORT' gefunden werden.



  • Sieh mal in deinen Unterlagen zu Standard SQL nach! 😉
    Ich bilde mir ein, dass es da ein entsprechendes Schlüsselwort gibt, mit dem TQuery hat jedenfalls nichts zu tun.

    Und deshalb ab nach "Rund um".



  • Das Schlüsselwort heist lower (oder upper)

    select * from bla where lower(spalte) = lower('wHaTeVeR')



  • Wenn aber in der Datenbank den Wert 'SuchWOrt' enthalten ist, wird dieser aber damit nicht gefunden gefunden. Denn 'SuchWOrt' ist nicht gleich lower('sUCHWOrt')... 😕 😕

    so versteh ich das auf jeden Fall



  • Darum machst du ja auch lower(spalte).

    Auch wenn in der Spalte "SuChWoRt" steht, wird es durch das lower() zu "suchwort" und dann erst mit dem, ebenfalls durch lower() in kleinbuchstaben gewandelten, suchwort vergleichen.

    Also Spalte enthält "BlA". lower(spalte) ergibt "bla"
    Dein Suchwort sei "bLa". lower('bLa') ergibt "bla"

    somit ergibt lower(spalte) = lower('bLa') eine Übereinstimmung.


Anmelden zum Antworten