MySQL
23 отговора
1090 прегледа
MySQL
MySQL LIKE
Pi6a si az select * from table_name where col_name like 'A%'
i mi vra6ta rezultati zapo4va6ti osven s bukva 'a' i s drugi bukvi.
Bazata mi e na kirilitza, probvax da pi6a bukvata i na kirilitza i na latinitza, rezultata e ednakav.
I s drugi bukvi - sa6to
Ni6to ne razbiram, ne triabva da e taka
Mnogo 6te se radvam, ako niakoi moje da mi pomogne
Pi6a si az select * from table_name where col_name like 'A%'
i mi vra6ta rezultati zapo4va6ti osven s bukva 'a' i s drugi bukvi.
Bazata mi e na kirilitza, probvax da pi6a bukvata i na kirilitza i na latinitza, rezultata e ednakav.
I s drugi bukvi - sa6to
Ni6to ne razbiram, ne triabva da e taka
Mnogo 6te se radvam, ako niakoi moje da mi pomogne
Re: MySQL
Предиката LIKE на MySQL не е чувствителен към големи и малки букви.
Проблема се решава с оператора BINARY.
[линк]
__________________________________
Пътят към ада е осеян с добри намерения
Проблема се решава с оператора BINARY.
[линк]
__________________________________
Пътят към ада е осеян с добри намерения
я хубаво прочети въпроса....
трябва да дълбаеш в настройките на операционната система и самия MySql....само, че къде точно идея нямам...
и аз бях забелязал преди време подобно нещо, ама реших че сам съм си виновен....
иначе отговора се съдържа във въпроса - MySql - нищо не плащаш нищо не получаваш...))
я опитай тая таблица да я сортираш по поле, в което има кирилица...тогава какво мазало става....
и аз бях забелязал преди време подобно нещо, ама реших че сам съм си виновен....
иначе отговора се съдържа във въпроса - MySql - нищо не плащаш нищо не получаваш...))
я опитай тая таблица да я сортираш по поле, в което има кирилица...тогава какво мазало става....
Re: я хубаво прочети въпроса....
Мисля, че отговора на въпроса е точно това BINARY, затова дадох този линк.
Вярно е, че MySQL не е SQL Server още повече Oracle, но си има своите достойнства и не бива да се пренебрегва. Що се отнася до сортиране по поле в което има крилица, решението е пак BINARY(проблема е като горния).
Лек ден.
__________________________________
Пътят към ада е осеян с добри намерения
Вярно е, че MySQL не е SQL Server още повече Oracle, но си има своите достойнства и не бива да се пренебрегва. Що се отнася до сортиране по поле в което има крилица, решението е пак BINARY(проблема е като горния).
Лек ден.
__________________________________
Пътят към ада е осеян с добри намерения
Re: я хубаво прочети въпроса....
Moje bi triabva6e da spomena, 4e izpolzvam MySQL pod Windows98.
Osven tova malko se samniavam, 4e problema ima ne6to ob6to s malkite i golemite bukvi, no 6te probvam.
Blagodaria za saveta.
Drug problem, koito iznikna mejduvremenno - iskam da se izvedat samo zapisite, koito sa s max stoinost, a se izvejdat i ostanalite.
Osven tova malko se samniavam, 4e problema ima ne6to ob6to s malkite i golemite bukvi, no 6te probvam.
Blagodaria za saveta.
Drug problem, koito iznikna mejduvremenno - iskam da se izvedat samo zapisite, koito sa s max stoinost, a se izvejdat i ostanalite.
Редактирано от nevidimata на
Re: я хубаво прочети въпроса....
Ако "iskam da se izvedat samo zapisite, koito sa s max stoinost" означава, че искаш да изведеш N на брой записа като ги сортираш по големина в намаляващ ред:
SELECT * FROM mytable ORDER by myfield DESC LIMIT N;
Ако не съм те разбрал правилно, поясни се щото не си много ясен/ясна.
__________________________________
Пътят към ада е осеян с добри намерения
SELECT * FROM mytable ORDER by myfield DESC LIMIT N;
Ако не съм те разбрал правилно, поясни се щото не си много ясен/ясна.
__________________________________
Пътят към ада е осеян с добри намерения
Re: MySQL
не съм 100% сигурен, че така ставаше, но може да погледнеш [линк] за подробности
един вид като стартираш сървера да му добавиш на командния ред --default-character-set=cp1251 имаше начин и в my.cnf-то
там пише, че за съществуващи вече бази е добре да се направи myisamchk -r -q

един вид като стартираш сървера да му добавиш на командния ред --default-character-set=cp1251 имаше начин и в my.cnf-то
там пише, че за съществуващи вече бази е добре да се направи myisamchk -r -q
Re: я хубаво прочети въпроса....
Ami mai napisax -> select col_name1, max(col_name2) as max from table_name group by col_name1
Редактирано от nevidimata на
Re: я хубаво прочети въпроса....
когато напишеш WHERE pole1 LIKE '%A%' трябва да ти връща само резултати започващи с "А" или "а" не трябва да има резултати започващи с ДРУГИ БУКВИ.
никой никъде не се е оплаквал от малки и големи букви....
когато сортираш по колона, трябва да я сортира по АЗБУЧЕН ред, а не по случаен....обяснението с кодовата таблица, което даде някой преди мен е логично, и ако работи - добре....
никой никъде не се е оплаквал от малки и големи букви....
когато сортираш по колона, трябва да я сортира по АЗБУЧЕН ред, а не по случаен....обяснението с кодовата таблица, което даде някой преди мен е логично, и ако работи - добре....
MySQЛ sort cp1251
Във файла my.ini се добавя:
[mysqld]
character-sets-dir=c:/mysql/share/charsets (тук се настройва спрямо вашата инсталация)
default-character-set = cp1251
Това е достатъчно за да работи сортирането на кирилицата без проблеми
[mysqld]
character-sets-dir=c:/mysql/share/charsets (тук се настройва спрямо вашата инсталация)
default-character-set = cp1251
Това е достатъчно за да работи сортирането на кирилицата без проблеми
Редактирано от Borko на
това вече е .......
смислен отговор!
предполагам не само сортирането а и филтрирането ще работи....
предполагам не само сортирането а и филтрирането ще работи....
Re: MySQЛ sort cp1251
Za sajalenie az ne moga da se poxvalia kato K - pri men tova ne6to xi4 ne ba4ka, t.e. izob6to ne promenia ne6tata
ти очевидно
имаш някакъв много сериозен проблем. Принципно BINARY /*както каза Стан*/ винаги работи перфектно. Независимо windows или не, главните и малките букви имат различно аски представяне, сиреч различен двоичен код.
Или рещо бъркаш със заявката /*т.е. не достига до сървъра, както си я постнала*/ или просто базата ти не е в ред. Това не зависи от конфигурационния файл.
Откъде издаваш заявката, от клиентската програма mysql ли?
The things are always changing, I feel that it`s allright
Или рещо бъркаш със заявката /*т.е. не достига до сървъра, както си я постнала*/ или просто базата ти не е в ред. Това не зависи от конфигурационния файл.
Откъде издаваш заявката, от клиентската програма mysql ли?
The things are always changing, I feel that it`s allright
Re: ти очевидно
Zaiavkata ia zadavam 4rez php i 4rez phpMyadmin i 4rez MySQL - vse edno i sa6to stava.
Re: ти очевидно
a napravi li si poleto BINARY vse pak? taka i ne kazva6? kakva e taq tvoqta misti4na baza danni. Ima6 li create izrazite, da probvame i nie?
дао дъ дзин
дао дъ дзин
vsi4ko e nared
Ami opravix se ve4e, vsi4ko tragna.
S binary-to mai stana, iavno predi ne6to sam propusnala
Mnogo blagodaria na vsi4ki
S binary-to mai stana, iavno predi ne6to sam propusnala
Mnogo blagodaria na vsi4ki
Редактирано от nevidimata на
Re: vsi4ko e nared ...
Извинявам се за късното включване, но все пак проблема е изцяло в променливата character_set
mysql> show variables like 'char%';
Ще ти даде повече информация
BINARY просто прави сравненията Case-Sensitive
или на български казано при BINARY има разлика между главни и малки букви.
в контекста на текущия character-set
character_set влияе върху LIKE, ORDER BY, UPPER, LOWER
тъй, че погледни отново какво са ти отговорили phpGuru и Borko с две дребни добавки:
1. Като смениш character_set (а и всяка друга промелнива в my.cnf) трябва все пак да рестартираш mysqld
2. Задължително пусни myisamchk или REPAIR TABLE за всяка таблица която има индексирано поле на кирилица.
salle.online.bg/sig
mysql> show variables like 'char%';
Ще ти даде повече информация
BINARY просто прави сравненията Case-Sensitive
или на български казано при BINARY има разлика между главни и малки букви.
в контекста на текущия character-set
character_set влияе върху LIKE, ORDER BY, UPPER, LOWER
тъй, че погледни отново какво са ти отговорили phpGuru и Borko с две дребни добавки:
1. Като смениш character_set (а и всяка друга промелнива в my.cnf) трябва все пак да рестартираш mysqld
2. Задължително пусни myisamchk или REPAIR TABLE за всяка таблица която има индексирано поле на кирилица.
salle.online.bg/sig
Re: vsi4ko e nared ...
Виж сега salle,
1. В моя my.cnf не съм настройвал никакъв character-set и всичко що е кирилица работи. Работи сравняването, сортирането и т.н. Нямам никакви проблеми с това.
2. Що се отнася до BINARY, то мога да кажа, че може да се използва и за чувствителност към главни и малки букви, но основнвта му задача е да накара mysql-а да интерпретира отделните символи на стринговете бинарно. Чувствителността е следствие на това интерпретиране.
Вярно е, че в големите буквари пише само за това case-sensitivity, но това е така понеже повечето автори на книги не са се сблъсквали с кирилицата.
Не се съмнявам, че е полезно да се задава character-set, но до сега не ми е било нужно.
__________________________________
Пътят към ада е осеян с добри намерения
1. В моя my.cnf не съм настройвал никакъв character-set и всичко що е кирилица работи. Работи сравняването, сортирането и т.н. Нямам никакви проблеми с това.
2. Що се отнася до BINARY, то мога да кажа, че може да се използва и за чувствителност към главни и малки букви, но основнвта му задача е да накара mysql-а да интерпретира отделните символи на стринговете бинарно. Чувствителността е следствие на това интерпретиране.
Вярно е, че в големите буквари пише само за това case-sensitivity, но това е така понеже повечето автори на книги не са се сблъсквали с кирилицата.
Не се съмнявам, че е полезно да се задава character-set, но до сега не ми е било нужно.
__________________________________
Пътят към ада е осеян с добри намерения
Re: BINARY
Дай да се разберем за какво говорим
1. name BINARY char(16) -> select ... order by name;
2. name char(16) -> select ... order by BINARY name;
3. name char(16) -> select ... where BINARY name = 'Гошо';
4. name char(16) -> select ... where name = BINARY 'Гошо';
Работата е там, че cp1251 е адски удобна кодова таблица от гледна точка на програмиране .... знаеш защо. Просто е подредена.
Не така стоят нещата с другите кодови таблици като latin2 и така нататък.
Заради пробата - пусни едно
mysql> show variables like 'char%'; и кажи какви кодови таблици имаш компилирани
salle.online.bg/sig
1. name BINARY char(16) -> select ... order by name;
2. name char(16) -> select ... order by BINARY name;
3. name char(16) -> select ... where BINARY name = 'Гошо';
4. name char(16) -> select ... where name = BINARY 'Гошо';
Работата е там, че cp1251 е адски удобна кодова таблица от гледна точка на програмиране .... знаеш защо. Просто е подредена.
Не така стоят нещата с другите кодови таблици като latin2 и така нататък.
Заради пробата - пусни едно
mysql> show variables like 'char%'; и кажи какви кодови таблици имаш компилирани
salle.online.bg/sig