2 питания
8 отговора
362 прегледа
2 питания
Имам 2 питания. Моля за вашата помощ!
1. Имам сървар с инсталиран MySQL и проблем със следната заявка
SELECT name FROM table1 WHERE name LIKE '%Я%'
не ми дава имена в които има малко 'я'
проблема е същия и с 'Ч' и 'ч', с останалите букви няма проблем
какво да правя, къде е проблема?
2. Как да напиша заявяка, която сменя част на съдържанието от дадено поле
например: искам навсякъде където в полето name има 'xxxYYYzzzz' да го сменя с 'xxxHELLOzzzz'
Благодаря предварително!
1. Имам сървар с инсталиран MySQL и проблем със следната заявка
SELECT name FROM table1 WHERE name LIKE '%Я%'
не ми дава имена в които има малко 'я'
проблема е същия и с 'Ч' и 'ч', с останалите букви няма проблем
какво да правя, къде е проблема?
2. Как да напиша заявяка, която сменя част на съдържанието от дадено поле
например: искам навсякъде където в полето name има 'xxxYYYzzzz' да го сменя с 'xxxHELLOzzzz'
Благодаря предварително!
Re: 2 питания
1. Znachi pren tezi zaqvki rabotqt (!??!) kompiliral li si MySQL-a s --with-charset=cp1251 ??
2.Ne razbiram chak tolkova ot zaqvki no tova shte stane lesno s ereg_replace()
2.Ne razbiram chak tolkova ot zaqvki no tova shte stane lesno s ereg_replace()
Re: 2 питания
1. При мен също работи
2. Напиши update заявка като тази например:
update table1 set FName = 'xxxYYYzzzz' where FName = 'xxxHELLOzzzz';
2. Напиши update заявка като тази например:
update table1 set FName = 'xxxYYYzzzz' where FName = 'xxxHELLOzzzz';
Re: 2 питания
Opitai naistina da go kompilirash s cp1251...
Vsashtnost koia versia e MySQL-a ???
Shtoto pri men na 3.22.32 (vsashtnost, tova beshe mnoogo otdavna
) imashe problem s bukvata "ч".
Vsashtnost koia versia e MySQL-a ???
Shtoto pri men na 3.22.32 (vsashtnost, tova beshe mnoogo otdavna
regexp in SQL?
Значи, за втория въпрос определено ти трябват някакъв вид регулярни изрази...Та въпросът ми е има ли изобщо такова нещо вградено в SQL?
Математиката се състои от очевидни неща подредени по подходящ начин.
Математиката се състои от очевидни неща подредени по подходящ начин.
Re: regexp in SQL?
Има.
RLIKE примерно
Обаче!!!
Много е важно да помниш, че те никога по никакъв начин не могат да използват Индекс.
А това може да доведе до страхотно забавяне. 10, 100, 1000 пъти по-бавно - няма горна граница.
Сметката е проста - ако имаш таблица със 1 000 000 реда а искаш до извадиш около 10 ако select-а ти използва индекс ще обработиш 10 реда иначе ....
Това важи не само за RLIKE а и за доста други функции.
Примерно LIKE 'a%' - може да използва Индекс а LIKE '%a' - не може
Ето нещо от моята практика (напоследък ми се наложи):
select count(*) from tbl;
441463
select count(*) from tbl where name like 'neshto%';
| 515 |
+----------+
1 row in set (0.03 sec)
select count(*) from tbl where name like '%neshtodrugo';
| 1096 |
+----------+
1 row in set (2.97 sec)
Колко пъти е разликата?
Linux is like a wigwam - No Windows, No Gates, Apache inside
RLIKE примерно
Обаче!!!
Много е важно да помниш, че те никога по никакъв начин не могат да използват Индекс.
А това може да доведе до страхотно забавяне. 10, 100, 1000 пъти по-бавно - няма горна граница.
Сметката е проста - ако имаш таблица със 1 000 000 реда а искаш до извадиш около 10 ако select-а ти използва индекс ще обработиш 10 реда иначе ....
Това важи не само за RLIKE а и за доста други функции.
Примерно LIKE 'a%' - може да използва Индекс а LIKE '%a' - не може
Ето нещо от моята практика (напоследък ми се наложи):
select count(*) from tbl;
441463
select count(*) from tbl where name like 'neshto%';
| 515 |
+----------+
1 row in set (0.03 sec)
select count(*) from tbl where name like '%neshtodrugo';
| 1096 |
+----------+
1 row in set (2.97 sec)
Колко пъти е разликата?
Linux is like a wigwam - No Windows, No Gates, Apache inside
Re: 2 питания
MySQL-a ima edna takava function REGEXP - vij dali nqma da moje da ti svyrshi rabota da updadesh vsichko bez da se nalaga da go podmenqsh v php coda
Probai neshto takova
Priemam che iskash pyrvite 4 simvola da gi zapazish, kakto i posednite 4:
update table_name set field_name=concat(FELT(field_name,2),"kyp",RIGHT(field_name,2)) where field_name REGEXP "^xxxx.+zzzz$";
tova sha ti mache vsichki deto otgovarqt na toq regexp, mojesh da polzvash v sluchaq i LIKE ili kakvot tam se setish drygo,
LEFT e kato substr v php to: substr("neshto",0,2)
RIGHT syshtoto ot kraq na stringa
update table_name set field_name=concat(FELT(field_name,2),"kyp",RIGHT(field_name,2)) where field_name REGEXP "^xxxx.+zzzz$";
tova sha ti mache vsichki deto otgovarqt na toq regexp, mojesh da polzvash v sluchaq i LIKE ili kakvot tam se setish drygo,
LEFT e kato substr v php to: substr("neshto",0,2)
RIGHT syshtoto ot kraq na stringa
moje i taka :)
za vtoroto pitane - probvai
update table set field=replace(field,'neshto','drugo') where field like '%neshto%'
bi triabvalo da zameni samo stringa neshto sas drugo
:)
uspeh
anyone but me
update table set field=replace(field,'neshto','drugo') where field like '%neshto%'
bi triabvalo da zameni samo stringa neshto sas drugo
:)
uspeh
anyone but me
Редактирано от anyone на