|
SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka |
|
Alati teme | Način prikaza |
21. 12. 2012. | #1 |
novi član
Na probnom radu
Datum učlanjenja: 06.01.2010
Poruke: 10
Hvala: 0
8 "Hvala" u 3 poruka
|
MySQL nepravi razliku izmedju č, ć i c
Imam bazu koja je utf8, tabelu
Kôd:
CREATE TABLE a_test ( naziv VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci ) ENGINE=INNODB DEFAULT CHARSET=utf8; Kôd:
INSERT INTO a_test (naziv) VALUES ('Čačak') , ('Ćirko') , ('Čovek') , ('Car') , ('Čarna'); Kôd:
SELECT * FROM a_test WHERE naziv LIKE 'Ć%'; Kôd:
Čačak Ćirko Čovek Car Čarna |
21. 12. 2012. | #2 |
Ivan Dilber
Sir Write-a-Lot
|
To ima veze sa collation-om, ima ovde objasnjenje http://dev.mysql.com/doc/refman/5.0/...entations.html
ali ne znam koje je resenje sem da stavis neki ascii za to polje...
__________________
Leadership is the art of getting people to want to do what you know must be done. |
21. 12. 2012. | #3 |
novi član
Na probnom radu
Datum učlanjenja: 06.01.2010
Poruke: 10
Hvala: 0
8 "Hvala" u 3 poruka
|
Ako sam ja dobro razumeo sta pise link-1 i link-2 izgleda da to nije moguce!
link-1: For example, the following equalities hold in both utf8_general_ci and utf8_unicode_ci: Ä = A Ö = O Ü = U link-2: Non-UCA collations have a one-to-one mapping from character code to weight. In MySQL, such collations are case insensitive and accent insensitive. utf8_general_ci is an example: 'a', 'A', '脌', and '谩' each have different character codes but all have a weight of 0x0041 and compare as equal. Ono sto mene zbunjuje je sto ovo sve radi kako treba ako se postavi konekcija latin1, a tabela definise kao Kôd:
SET NAMES 'latin1'; CREATE TABLE a_test_latin ( naziv VARCHAR(50) CHARACTER SET latin1 COLLATE latin1_general_ci ) ENGINE=INNODB DEFAULT CHARSET=latin1; INSERT INTO a_test_latin (naziv) VALUES ('Čačak') , ('Ćirko') , ('Čovek') , ('Car') , ('Čarna'); SELECT * FROM a_test_latin WHERE naziv LIKE 'Č%' COLLATE latin1_general_ci; naziv Čačak Čovek Čarna |
22. 12. 2012. | #4 |
profesionalac
Qualified
Datum učlanjenja: 06.09.2007
Lokacija: Zrenjanin
Poruke: 109
Hvala: 21
11 "Hvala" u 11 poruka
|
Resenje je da stavis collation utf_slovenian_ci, ja sam isti problem imao pre neki dan, default collation je utf8_general_ci, koji sva slova svodi na njihove proste varijante, tj č i ć u c, š u s, ž u z, dok đ radi valjda zato sto isti karakter postoji u islandskom pismu.
Po mysql dokumentaciji je dovoljno staviti utf8_unicode_ci, ali u mom slučaju to nije pomoglo. utf8_general_ci je brzi, manje precizan jer ne podrzava sva nasa i gomilu drugih slova tako sto ih cuva u indexu kao jednostavnije varijante iz ascii skupa utf8_unicode_ci je sporiji, ali precizniji jer radi sa akcentovanim slovima, tj u tvom slučaju sa našim slovima. |
22. 12. 2012. | #5 |
expert
Grand Master
Datum učlanjenja: 11.04.2010
Poruke: 998
Hvala: 141
959 "Hvala" u 153 poruka
|
Poslednja izmena od webarto : 22. 12. 2012. u 03:07. |
2 članova zahvaljuje webarto za poruku: |
22. 12. 2012. | #6 | |
novi član
Na probnom radu
Datum učlanjenja: 06.01.2010
Poruke: 10
Hvala: 0
8 "Hvala" u 3 poruka
|
Samo da zahvalim @pkrstic-u i @webart-u na predlozima. Problem je resen!
Citat:
|
|
22. 12. 2012. | #7 |
Ivan Dilber
Sir Write-a-Lot
|
utf8_unicode_ci je bitan i zbog pravilnog sortiranja, narocito cirilice
__________________
Leadership is the art of getting people to want to do what you know must be done. |
|
|