Benjamin Grieshaber
Benjamin Grieshaber

Reputation: 81

MySQL DB selects records with and without umlauts. e.g: '.. where something = FÖÖ'

My Table collation is "utf8_general_ci". If i run a query like:

SELECT * FROM mytable WHERE myfield = "FÖÖ"

i get results where:

...  myfield = "FÖÖ"
...  myfield = "FOO"

is this the default for "utf8_general_ci"?

What collation should i use to only get records where myfield = "FÖÖ"?

Upvotes: 8

Views: 5862

Answers (3)

jiv-e
jiv-e

Reputation: 513

For scandinavian letters you can use utf8_swedish_ci fir example.

Here is the character grouping for utf8_swedish_ci. It shows which characters are interpreted as the same. http://collation-charts.org/mysql60/mysql604.utf8_swedish_ci.html

Here's the directory listing for other collations. I'm no sure which is the used utf8_general_ci though. http://collation-charts.org/mysql60/

Upvotes: 0

Gunni
Gunni

Reputation: 519

SELECT * FROM table WHERE some_field LIKE ('%ö%'  COLLATE utf8_bin)

Upvotes: 7

Hammerite
Hammerite

Reputation: 22340

A list of the collations offered by MySQL for Unicode character sets can be found here:

http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html

If you want to go all-out and require strings to be absolutely identical in order to test as equal, you can use utf8_bin (the binary collation). Otherwise, you may need to do some experimentation with the different collations on offer.

Upvotes: 3

Related Questions