Autor | Zpráva | ||
---|---|---|---|
luma64 Profil |
#1 · Zasláno: 18. 8. 2018, 21:45:27
Zdravím. AKo pls dosiahnem presné porovnanie reťazca v sql príkaze
select meno from table where meno like 'Ján%' Potrebujem nájsť len tie záznamy, ktoré obsahujú Ján, mne však select zobrazí aj napr. Jandák, Janko atď. Vďaka ! |
||
SqlGuru Profil * |
#2 · Zasláno: 18. 8. 2018, 22:12:00
SELECT `meno` FROM `table` WHERE `meno` IN (SELECT FROM_BASE64('SsOhbg')) |
||
Radek9 Profil |
#3 · Zasláno: 18. 8. 2018, 22:23:54
luma64:
MySQL u běžných porovnání většinou nerozlišuje mezi znaky s diakritikou a bez ní. Je tedy nutné manuálně přepnout na binární shodu: SELECT meno FROM table WHERE meno LIKE 'Ján%' COLLATE utf8_bin; Pokud bys chtěl i case-insensitive search, tak takto: SELECT meno FROM table WHERE LOWER(meno) LIKE LOWER('Ján%') COLLATE utf8_bin; |
||
Keeehi Profil |
#4 · Zasláno: 19. 8. 2018, 02:57:24
luma64:
„ select meno from table where meno like 'Ján%' “
Předchozí ti neradí úplně špatně ale je to až další stupeň. Ono ti možná stačí jen obyčejné porovnání select meno from table where meno = 'Ján' |
||
Tomášeek Profil |
#5 · Zasláno: 19. 8. 2018, 10:45:01
Radek9:
Ta verze s LOWER bude pomalá, nebude použita cache. Pro větší tabulku nepoužitelné. |
||
Radek9 Profil |
#6 · Zasláno: 19. 8. 2018, 11:00:49
Keeehi:
Vzhledem k tomu, že má ten sloupec obsahovat „Ján“, nikoli se mu přímo rovnat, to nedává smysl, ne? Navíc tohle by stále vybralo „Ján“ i „Jan“. Záleží na použitém porovnání. Tomášeek: O tom samozřejmě vím, ale nepředpokládám, že to v tomto případě bude potřeba. Jinak se ale case-insensitive search (se zachováním rozdílů diakritiky) udělat nedá. Leda si implementovat vlastní porovnání. |
||
Tomášeek Profil |
#7 · Zasláno: 19. 8. 2018, 14:19:59
Radek9:
Ten LOWER sloupec muze ty preppočítány bokem a pracovat s nim. Vím, ze ty to víš, jen pro tazatele-zacatecnika mi přišlo vhodně to doplnit. |
||
Radek9 Profil |
#8 · Zasláno: 19. 8. 2018, 16:03:25
Tomášeek:
Pravda, díky za doplnění. |
||
luma64 Profil |
#9 · Zasláno: 19. 8. 2018, 16:15:16
Vďaka za pomoc !
|
||
Kajman Profil |
#10 · Zasláno: 19. 8. 2018, 19:43:47
Myslím, že lower na cache vliv nemá. Spíše ovlivní nevyužití případného indexu, ale to stejné udělá i změna porovnání. Pokud jde o rychost a je na tom sloupci index, tak lze udělat dotaz, co najde záznamy i ty podobné a až na tom výsledku vynutit binární porovnání. Jestli tam bude i lower už nebude skoro žádný rozdíl.
|
||
Časová prodleva: 4 roky
|
0