compare 2 string - MySQL
5 отговора
825 прегледа
compare 2 string - MySQL
Здравейте !
Базата данни е MySQL 4.1.12 , искам да направя сравнение м/у два стринга на български , единият е записан в базата данни другиат се въвежда от потребителят. При default charset latin1 , резултатите не бяха много добри. Реших да сменя charseta и collation-а на таблиците , в които се пази информацията на български. Ето едната таблица:
CREATE TABLE bg(
name char(50) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bulgarian_ci;
Пак пробвах , и изпища за грешка че няма как да сравни cp1251 с latin1.
Тогава направих следното:
mysql_query('SET NAMES cp1251'); и тука вече collation-а започна да не му харесва. Накрая преобразувах заявката така:
$query = "SELECT * FROM bg WHERE name=_latin1 '$target' COLLATE cp1251_bulgarian_ci";
този път нещата тръгнаха , но резултатите бяха ужасяващи. Въбше неработеше. От тук нататъка вече идея нямам какво да правя - предложете вие нещо ...
P.S. Странно е че когато премонеих таблицата на ENGINE=MyISAM DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bulgarian_ci; и вкарах вътре информация после под phpMyAdmin-а нищо не се четеше
Базата данни е MySQL 4.1.12 , искам да направя сравнение м/у два стринга на български , единият е записан в базата данни другиат се въвежда от потребителят. При default charset latin1 , резултатите не бяха много добри. Реших да сменя charseta и collation-а на таблиците , в които се пази информацията на български. Ето едната таблица:
CREATE TABLE bg(
name char(50) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bulgarian_ci;
Пак пробвах , и изпища за грешка че няма как да сравни cp1251 с latin1.
Тогава направих следното:
mysql_query('SET NAMES cp1251'); и тука вече collation-а започна да не му харесва. Накрая преобразувах заявката така:
$query = "SELECT * FROM bg WHERE name=_latin1 '$target' COLLATE cp1251_bulgarian_ci";
този път нещата тръгнаха , но резултатите бяха ужасяващи. Въбше неработеше. От тук нататъка вече идея нямам какво да правя - предложете вие нещо ...
P.S. Странно е че когато премонеих таблицата на ENGINE=MyISAM DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bulgarian_ci; и вкарах вътре информация после под phpMyAdmin-а нищо не се четеше
Re: compare 2 string - MySQL
latin1_swedish_ci
Имах подобем проблем, така си го реших
Успех
Имах подобем проблем, така си го реших
Успех
Re: compare 2 string - MySQL
Аийде бе хора - предложете нещо
или препоръчайте някоя DB, с която няма да имам проблеми с българският език, може би postgre - някой пробвал ли е ?
или препоръчайте някоя DB, с която няма да имам проблеми с българският език, може би postgre - някой пробвал ли е ?
Ми добре де
аз такива проблеми съм нямал.
Ама си ползвам приложения, които ползват libmysql.
С няколко допълнителни мои неща.
RTFM
Има един куп места в които се задават charset.
Зададе ли ги вичките?
По правилния начин?
Bеer? Mоre?
Плацебото
Ама си ползвам приложения, които ползват libmysql.
С няколко допълнителни мои неща.
RTFM
Има един куп места в които се задават charset.
Зададе ли ги вичките?
По правилния начин?
Bеer? Mоre?
Плацебото
Re: Да беше казал какъв е проблема ..
"този път нещата тръгнаха , но резултатите бяха ужасяващи. Въбше неработеше. "
Никой не е в състояние да ти помогне при такова "обяснение"
Какво разбираш под "ужасяващи" и "неработеше" само ти си знаеш.
Никой не може да ти чете мислите все пак.
"mysql_query('SET NAMES cp1251'); и тука вече collation-а започна да не му харесва."
Какво означава "не му харесва"?
mysql> CREATE TABLE bg(
-> name char(50) NOT NULL default ''
-> ) ENGINE=MyISAM DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bulgarian_ci;
Query OK, 0 rows affected (0.04 sec)
mysql> SET NAMES cp1251;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO bg VALUES("България");
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM bg WHERE name = "България"\G
*************************** 1. row ***************************
name: България
1 row in set (0.00 sec)
Както виждаш и си работи и му "харесва" и нищо "ужасяващо" няма в резултатите.
Проблемът очевидно е в твоят телевизор. Ама ако продължаваш да твърдиш
- Ми не работи.
а не казваш какво и Господ не може да ти помогне.
salle.online.bg/sig
Никой не е в състояние да ти помогне при такова "обяснение"
Какво разбираш под "ужасяващи" и "неработеше" само ти си знаеш.
Никой не може да ти чете мислите все пак.
"mysql_query('SET NAMES cp1251'); и тука вече collation-а започна да не му харесва."
Какво означава "не му харесва"?
mysql> CREATE TABLE bg(
-> name char(50) NOT NULL default ''
-> ) ENGINE=MyISAM DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bulgarian_ci;
Query OK, 0 rows affected (0.04 sec)
mysql> SET NAMES cp1251;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO bg VALUES("България");
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM bg WHERE name = "България"\G
*************************** 1. row ***************************
name: България
1 row in set (0.00 sec)
Както виждаш и си работи и му "харесва" и нищо "ужасяващо" няма в резултатите.
Проблемът очевидно е в твоят телевизор. Ама ако продължаваш да твърдиш
- Ми не работи.
а не казваш какво и Господ не може да ти помогне.
salle.online.bg/sig