Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 09:40 03.07.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | 3 | >> (покажи всички)
Тема MySQL  
Автор nevidimata (непознат )
Публикувано25.08.02 15:15



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



Тема Re: MySQLнови [re: nevidimata]  
Автор ..:: StanProg ::.. (Developer)
Публикувано26.08.02 13:44



Предиката LIKE на MySQL не е чувствителен към големи и малки букви.
Проблема се решава с оператора BINARY.



__________________________________
Пътят към ада е осеян с добри намерения

Тема я хубаво прочети въпроса....нови [re: ..:: StanProg ::..]  
Автор Topбaлaн (любопитко)
Публикувано26.08.02 20:57



трябва да дълбаеш в настройките на операционната система и самия MySql....само, че къде точно идея нямам...
и аз бях забелязал преди време подобно нещо, ама реших че сам съм си виновен....
иначе отговора се съдържа във въпроса - MySql - нищо не плащаш нищо не получаваш...))

я опитай тая таблица да я сортираш по поле, в което има кирилица...тогава какво мазало става....



Тема Re: я хубаво прочети въпроса....нови [re: Topбaлaн]  
Автор ..:: StanProg ::.. (Developer)
Публикувано27.08.02 09:02



Мисля, че отговора на въпроса е точно това BINARY, затова дадох този линк.
Вярно е, че MySQL не е SQL Server още повече Oracle, но си има своите достойнства и не бива да се пренебрегва. Що се отнася до сортиране по поле в което има крилица, решението е пак BINARY(проблема е като горния).

Лек ден.

__________________________________
Пътят към ада е осеян с добри намерения


Тема Re: я хубаво прочети въпроса....нови [re: ..:: StanProg ::..]  
Автор nevidimata (непознат)
Публикувано27.08.02 12:38



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.

Редактирано от nevidimata на 27.08.02 12:44.



Тема Re: я хубаво прочети въпроса....нови [re: nevidimata]  
Автор ..:: StanProg ::.. (Developer)
Публикувано27.08.02 13:36



Ако "iskam da se izvedat samo zapisite, koito sa s max stoinost" означава, че искаш да изведеш N на брой записа като ги сортираш по големина в намаляващ ред:

SELECT * FROM mytable ORDER by myfield DESC LIMIT N;

Ако не съм те разбрал правилно, поясни се щото не си много ясен/ясна.

__________________________________
Пътят към ада е осеян с добри намерения


Тема Re: MySQLнови [re: nevidimata]  
Автор phpGuruАдминистратор (член)
Публикувано28.08.02 15:45



не съм 100% сигурен, че така ставаше, но може да погледнеш

за подробности

един вид като стартираш сървера да му добавиш на командния ред --default-character-set=cp1251 имаше начин и в my.cnf-то

там пише, че за съществуващи вече бази е добре да се направи myisamchk -r -q



Тема Re: я хубаво прочети въпроса....нови [re: ..:: StanProg ::..]  
Автор nevidimata (непознат)
Публикувано28.08.02 16:23



Ami mai napisax -> select col_name1, max(col_name2) as max from table_name group by col_name1

Редактирано от nevidimata на 28.08.02 16:24.



Тема Re: я хубаво прочети въпроса....нови [re: ..:: StanProg ::..]  
Автор Topбaлaн (любопитко)
Публикувано28.08.02 21:09



когато напишеш WHERE pole1 LIKE '%A%' трябва да ти връща само резултати започващи с "А" или "а" не трябва да има резултати започващи с ДРУГИ БУКВИ.

никой никъде не се е оплаквал от малки и големи букви....

когато сортираш по колона, трябва да я сортира по АЗБУЧЕН ред, а не по случаен....обяснението с кодовата таблица, което даде някой преди мен е логично, и ако работи - добре....



Тема MySQЛ sort cp1251нови [re: nevidimata]  
Автор Borko (един от тълпата)
Публикувано29.08.02 09:34



Във файла my.ini се добавя:
[mysqld]
character-sets-dir=c:/mysql/share/charsets (тук се настройва спрямо вашата инсталация)
default-character-set = cp1251

Това е достатъчно за да работи сортирането на кирилицата без проблеми

Редактирано от Borko на 29.08.02 09:35.



Тема това вече е .......нови [re: Borko]  
Автор Topбaлaн (любопитко)
Публикувано29.08.02 09:54



смислен отговор!

предполагам не само сортирането а и филтрирането ще работи....



Тема Re: MySQЛ sort cp1251нови [re: Borko]  
Авторk (Нерегистриран)
Публикувано30.08.02 12:59



Страхотно! Това бачка!




Тема Re: MySQЛ sort cp1251нови [re: Borko]  
Автор nevidimata (непознат)
Публикувано30.08.02 14:03



Za sajalenie az ne moga da se poxvalia kato K - pri men tova ne6to xi4 ne ba4ka, t.e. izob6to ne promenia ne6tata



Тема ти очевиднонови [re: nevidimata]  
Автор voyager (флюбен)
Публикувано30.08.02 14:38



имаш някакъв много сериозен проблем. Принципно BINARY /*както каза Стан*/ винаги работи перфектно. Независимо windows или не, главните и малките букви имат различно аски представяне, сиреч различен двоичен код.
Или рещо бъркаш със заявката /*т.е. не достига до сървъра, както си я постнала*/ или просто базата ти не е в ред. Това не зависи от конфигурационния файл.
Откъде издаваш заявката, от клиентската програма mysql ли?

The things are always changing, I feel that it`s allright



Тема Re: ти очевиднонови [re: voyager]  
Автор nevidimata (непознат)
Публикувано30.08.02 14:56



Zaiavkata ia zadavam 4rez php i 4rez phpMyadmin i 4rez MySQL - vse edno i sa6to stava.



Тема Re: ти очевиднонови [re: nevidimata]  
Автор voyager (флюбен)
Публикувано30.08.02 15:25



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нови [re: nevidimata]  
Автор nevidimata (непознат)
Публикувано30.08.02 16:32



Ami opravix se ve4e, vsi4ko tragna.
S binary-to mai stana, iavno predi ne6to sam propusnala

Mnogo blagodaria na vsi4ki


Редактирано от nevidimata на 30.08.02 16:33.



Тема Re: vsi4ko e nared ...нови [re: nevidimata]  
Автор salle (Един такъв)
Публикувано01.09.02 00:06



Извинявам се за късното включване, но все пак проблема е изцяло в променливата 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 за всяка таблица която има индексирано поле на кирилица.



Тема Re: vsi4ko e nared ...нови [re: salle]  
Автор ..:: StanProg ::.. (Developer)
Публикувано01.09.02 13:35



Виж сега salle,

1. В моя my.cnf не съм настройвал никакъв character-set и всичко що е кирилица работи. Работи сравняването, сортирането и т.н. Нямам никакви проблеми с това.

2. Що се отнася до BINARY, то мога да кажа, че може да се използва и за чувствителност към главни и малки букви, но основнвта му задача е да накара mysql-а да интерпретира отделните символи на стринговете бинарно. Чувствителността е следствие на това интерпретиране.

Вярно е, че в големите буквари пише само за това case-sensitivity, но това е така понеже повечето автори на книги не са се сблъсквали с кирилицата.

Не се съмнявам, че е полезно да се задава character-set, но до сега не ми е било нужно.

__________________________________
Пътят към ада е осеян с добри намерения


Тема Re: BINARYнови [re: ..:: StanProg ::..]  
Автор salle (Един такъв)
Публикувано09.09.02 11:08



Дай да се разберем за какво говорим

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%'; и кажи какви кодови таблици имаш компилирани



Тема Re: BINARYнови [re: salle]  
Автор ..:: StanProg ::.. (Developer)
Публикувано09.09.02 19:23



Къде се изгуби бе човек, тука една седмица никакъв те няма. Може би на море?

Имах предвид 3,
но разлика в интерпретацията според мен няма в нито един от вариантите.
При BINARY всичко опира до т.н. ASCII таблица. Ако няма BINARY системата не е чувствителна към малки и главни букви в текущата кодова таблица.
Пример:
Имаме колона links със следните два реда: Проба, проба

SELECT * FROM `links` WHERE Name LIKE '%П%' Връща Проба проба

SELECT * FROM `links` WHERE BINARY Name LIKE '%П%' Връща Проба
SELECT * FROM `links` WHERE Name LIKE BINARY '%П%' Връща Проба
(Аз лично не знам каква е разликата между последните две. Има ли значение кое е BINARY, полето или критеря?)
Ако е зададено още при дефинирането на структурата на таблицата, не е необходимо да се указва в заявката. Винаги ще връща: Проба

Всичко разбира се опира до кодовата таблица която се използва, щото иначе как ще разбере от кой код да вади и каква стойност за да е нечувствително към разряда. Ето това имах предвид. Проблема не се свежда само до upper-case и lower-case.


Ето резултата от show variables like 'char%';

+----------------+--------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------------------------+
| Variable_name | Value

|
+----------------+--------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------------------------+
| character_set | latin1

|
| character_sets | latin1 big5 cp1251 cp1257 croat czech danish dec8 dos estonia
euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin2 la
tin5 swe7 usa7 win1250 win1251 win1251ukr ujis sjis tis620 |
+----------------+--------------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------------------------------------------+
2 rows in set (0.01 sec)

__________________________________
Пътят към ада е осеян с добри намерения


Тема Re: и аз съм хора бе старши :)нови [re: ..:: StanProg ::..]  
Автор salle (Един такъв)
Публикувано09.09.02 21:11



Една седмица Пирин и една Созопол

Това, което се опитвам да ти подскажа е, че cp1251 е частен случай. И по едтна случайност като използваш latin1 UPPER('б') може и да ти върне 'Б' .... в зависимост от OS, опциите при компилиране, библиотеките, компилатора, линкера .... ама може и да не. В този клуб и особено във PHP има доста постинги по въпроса.

Всъщност всичко това дето го изкоментирахме много скоро ще ми се качи на главата в десеторно по-сложен вариант.

във 4.1 освен SERVER DEFAULT има
DATABASE DEFAULT CHARACTER SET
TABLE CHARACTER SET
CHARACTER SET за всяка колона поотделно

плюс CONVER(<expr> USING charset)

плюс COLLATE

и т.н.

отсега усещам какво ще се случи като почнат да валят питания ама що:

GROUP BY name COLLATE german1 така ... пък
... WHERE (name COLLATE latin1_de LIKE 'A' иначе и ...



Ето ти един много бърз тест в 4.1:

mysql> CREATE TABLE n (n1 char(12) character set latin1, n2 char(12) character s
et cp1251, n3 char(12) binary);
Query OK, 0 rows affected (0.01 sec)

mysql> show create table n;
...
| n | CREATE TABLE `n` (
`n1` char(12) character set latin1 default NULL,
`n2` char(12) character set cp1251 default NULL,
`n3` char(12) binary default NULL
) TYPE=MyISAM |

Забележи какво се случва със n3 като го дефинираш като BINARY. Остава без charset ... или по-точно наследява Default на таблицата ако има такъв или ако няма default на Базата ....



Тема Re: и аз съм хора бе старши :)нови [re: salle]  
Автор ..:: StanProg ::.. (Developer)
Публикувано10.09.02 14:10



Като ми дойдат до главата, ще ги мисля тия character-set-и. Иначе като идея ми харесва, но пък човек трябва да е по-внимателен.

Я кажи как стоят нещата със stored procedures. Четох, че щяло да има поддръжка "около" MySQL 5.0. Знаеш ли в коя версия ще ги има и кога ще излезе? Изобщо чувал ли си нещо по въпроса, нещо от кухнята?

__________________________________
Пътят към ада е осеян с добри намерения


Тема Re: SPнови [re: ..:: StanProg ::..]  
Автор salle (Един такъв)
Публикувано10.09.02 14:41



е то аз съм във кухнята ....

Работи се по въпроса за SP т.е. има човек на който само това му е работата, но засега толкова.

За огромно мое съжаление sub-select са с много по-голям приоритет а сигурно знаеш колко много народ ги иска само заради заявки от рода на:

SELECT t1.id, (SELECT t2.b WHERE t2.ref = t1.id) FROM t1;

или

SELECT t1.id FROM t1 WHERE t1.id IN (SELECT t2.ref);


Иначе една новост във 4.0 (можещ да я пробваш), която съм сигурен, че ще се хареса особено на Web-developer-ите е комбинацията между () и LIMIT :)

Какво ще кажеш са следното (в 4.1 важи и за sub-selects):

mysql> (select * from n order by i limit 4) union (select * from n order by i desc limit 5) union (select * from n order by rand() limit 3) limit 10;
+------+
| i |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 9 |
| 8 |
| 7 |
| 6 |
| 5 |
+------+




Страници по тази тема: 1 | 2 | 3 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.