compare 2 string - MySQL

5 отговора 825 прегледа
#1

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-а нищо не се четеше

Отговор
в отговор на rdx9 #2

Re: compare 2 string - MySQL

latin1_swedish_ci
Имах подобем проблем, така си го реших

Успех

Отговор
в отговор на Sanndo #3

Re: compare 2 string - MySQL

не върши работа при мен ..

Отговор
в отговор на rdx9 #4

Re: compare 2 string - MySQL

Аийде бе хора - предложете нещо
или препоръчайте някоя DB, с която няма да имам проблеми с българският език, може би postgre - някой пробвал ли е ?

Отговор
в отговор на rdx9 #5

Ми добре де

аз такива проблеми съм нямал.
Ама си ползвам приложения, които ползват libmysql.
С няколко допълнителни мои неща.

RTFM
Има един куп места в които се задават charset.
Зададе ли ги вичките?
По правилния начин?

Bеer? Mоre?
Плацебото
Отговор
в отговор на rdx9 #6

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
Отговор