dedlfix: doppeltes %-Zeichen?

Beitrag lesen

Hi!

Erstens: MySQL ist richtig
Zweitens: die Abfrage endet mit "WHERE {Book}.Title LIKE '%%$value%%'"

Das ist nicht das Statement sondern irgendwelcher Code, der ein Statement zusammenbaut.

Was mit komisch vorkommt ist, dass das Abfrageverhalten abhängig ist von einem doppelten %-Zeichen. Das habe ich nirgends dokumentiert gefunden.

Wenn dieser dein Code das %% zu einem % interpretiert, wie es beispielsweise PHPs sprintf() macht, dann ...

Mach mal lieber eine Kontrollausgabe des fertigen Statements.

Setze ich den Suchwert zwischen einfache %-Zeichen, so ist das Abfrageverhalten wie beschreiben. Wird der Anfang des Suchstring klein geschrieben wird nichts gefunden, wird er Groß geschrieben, so wird der Feldinhalt gefunden.

Groß-Kleinschribung ist von der Kollation des Feldes abhängig, wobei hier üblicherweise nur bin(ary) oder nicht (=*_ci) in Frage kommt.

Wo finde ich die Angabe zur Collation? Ich glaube was mit utf8?

Schau in die Tabellendefinition, CREATE-Statement oder im Information_Schema.

  • SHOW CREATE TABLE tbl_name
  • SELECT collation_name FROM information_schema.columns WHERE table_schema='databasename' AND table_name='tablename' AND column_name='Title'

Lo!