» »

[MariaDB] Kako definirat tabelo, da bo index ločil med "a" in "ä"?

[MariaDB] Kako definirat tabelo, da bo index ločil med "a" in "ä"?

HotBurek ::

Dobro jutro.


Evo, nov dan, nov izziv.

Zanima me, kako definirat tabelo, da bo unique index ločil med "a" in "ä"? Ter seveda drugimi takšnimi primeri. (npr. s, ś, š, ş, ș,.. z, ź, ž,.. n, ń, ñ,.. u, ü, ů, ű,.. itn.)

Trenutno imam malo da ne čudno situacijo. Tabela temp ima CHARSET=utf8mb4, ter COLLATION=utf8mb4_general_ci. Stolpec word, v katerega vnašam string, ima datatype=text, gor pa index temp_word_IDX, unique, index type=hash.

In v to tabelo vnesem string "muca". In ga shrani.
Potem vnesem "müca" in ga shrani. (umlaut na u)
Potem vnesem "mücä" in ga shrani. (umlaut na u in a)
Potem vnesem pa "mucä" in faila. (umlaut na a)

Duplicate entry 'mucä' for key 'temp_word_IDX'

V planu A imam rešitev, da bom poleg samega strniga vnesel še hash sha265, in dal unique index na tist stolpec.

Vseeno me pa zanima, well, če so še kake druge opcije.

Za select sem pa že našel rešitev.

Primer:
SELECT *
FROM `temp`
WHERE `word` = BINARY 'müca';
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
  • spremenilo: HotBurek ()

Miha 333 ::

Uporabi collation utf8mb4_bin. Namreč collation utf8mb4_general_ci namenoma ne loči med accented in non-accented znaki. Več (velja tudi za mariadb): https://dev.mysql.com/doc/refman/5.7/en...

Na kakem drugem forumu, kjer so bolj nesramni, bi ti odgovorili zgolj z "rtfm".

Zgodovina sprememb…

  • spremenilo: Miha 333 ()

no comment ::

Ja, ampak na tistem forumu ti OP potem ne bi odgovoril, da "utf8mb4_bin" ni rešitev, ker je "utf8mb4_general_ci" boljši po numerologiji/feng šuju...

kuall ::

dokler se burek ne bo naučil uporabljat gugla ne bo nikamor prišel. razen če ima fetiš, da ga slo tech bumbarčki zajebavajo in gugl le zna uporabljat. :))

misek ::

Glede na to, kako se velikokrat jamra čez raznorazne spletne portale (nazadnje recimo od Telemacha), je jasno, da takšne portale delajo ljudje, ki za pomoč sprašujejo po forumih :)

karafeka ::

.

Zgodovina sprememb…

  • spremenil: karafeka ()

HotBurek ::

Nastavil sem, da ima stolpec collation=utf8mb4_bin, ter potestiral, in dela, kot se gre.

Prav tako pri select-u ni potrebno več dodat BINARY pred string-om.

Hvala za pomoč.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Miha 333 ::

Super, dodajam še, da je to namenoma oz. "by design". "_ci" na koncu pomeni "case insensitive" ter vključuje tudi ignoriranje diakritičnih znakov.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[UWP] [C#]

Oddelek: Programiranje
424232 (2262) BivšiUser2
»

MySQL php težava!

Oddelek: Izdelava spletišč
8938 (725) Estreznik
»

C# - MySQL - šumniki

Oddelek: Programiranje
52162 (2061) Matthew
»

MySQL in czs

Oddelek: Izdelava spletišč
423623 (2713) krho
»

phpbb forum tezava

Oddelek: Izdelava spletišč
151626 (1361) TICKO

Več podobnih tem