Šta je novo?

Collation nightmare

kUdtiHaEX

Super ridža
Administrator
Učlanjen(a)
18.07.2001
Poruke
18,077
Poena
1,365
Moja oprema  
CPU & Cooler
Intel® Core™ i5-9500F, NZXT Kraken Z63
GPU
Asus GTX 2070 Super
Storage
Samsung 980 Pro NVMe 1 TB
Kućište
NZXT H210i
Monitor
LG C2 42"
Miš & tastatura
Logitech G502, Keychron K8, Nuphy Air75, Ducky TKL One 2
Ostale periferije
Glupi HP štampač
Laptop
Apple Macbook Pro 14" M1
Tablet
Apple iPad Pro 11"
Mobilni telefon
Apple iPhone 13 Pro Max
Pametni uređaji
Apple Watch Ultra
Pristup internetu
  1. Kablovski internet
Imam jedan krajnje debilan problem.

Ako izvršim sledeći kveri po tabeli koja je UTF8 i poljima koja su UTF8:

Kod:
SELECT * FROM `gradovi` WHERE naziv_grada LIKE 'ŠA%' COLLATE utf8_general_ci

dobijem krajnje nebulozne rezultate tipa SARAJEVO, SAPNA... a tu slova Š nema nigde. Naravno, dobijem i one gradove koji počinju na Š poput ŠAMCA ali to nije to.

Naravno, ako uradim nesto poput ovoga:
Kod:
SELECT * FROM `gradovi` WHERE naziv_grada LIKE 'ŠA%' AND naziv_grada NOT LIKE 'SA%' COLLATE utf8_general_ci

onda dobijem poruku da ne postoji nijedan red u tabeli koji zadovoljava kriterijum što je teška nebuloza.

Kako da rešim ovaj nightmare sa našim slovima i collation-om?
 
Probaj da dodaš ispred upita
Kod:
SET NAMES utf8
tj, ako radiš u php "mysql_query("SET NAMES utf8");"
 
ako je mysql probaj WHERE BINARY naziv_grada LIKE 'Ša%'

samo je problem sto binary poredjenje ne moze da bude case insensitive :p
 
Probaj da dodaš ispred upita
Kod:
SET NAMES utf8
tj, ako radiš u php "mysql_query("SET NAMES utf8");"

Ne pomaze (a i sada pricam o cistom kveriju direktno iz MYSQL konzole).

@Joe: ne pomaze :)
MySQL returned an empty result set (i.e. zero rows). (Query took 0.0140 sec)
 
@Joe: ne pomaze :)
MySQL returned an empty result set (i.e. zero rows). (Query took 0.0140 sec)


a el ti je ŠA ili ša ili Ša u bazi ?

Kod:
SELECT a FROM b WHERE a LIKE 'Ša%'

165 total

Kod:
SELECT a FROM b WHERE a LIKE 'Sa%'

165 total

Kod:
SELECT a FROM b WHERE BINARY a LIKE 'Ša%'

1 total

collation je utf8_general_ci
 
Sve je pisano velikim slovima, collation je ut8_general_ci ili utg_unicode_ci (probao sam oba).
Sa ovim:
SELECT a FROM b WHERE a LIKE 'Ša%'

dobijem isti rezultat - reci koje pocinju na Sa i Ša. To vazi i za
SELECT a FROM b WHERE a LIKE 'Sa%'

Al' sa ovim
SELECT * FROM gradovi WHERE BINARY naziv_grada LIKE 'ŠA%'

odjednom dobijam dobar rezultat (sinoc nisam?) :) Gremlini...

Fala Joe ;-)
 
Poslednja izmena:
Vrh Dno