Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: MySQL, LIKE и регистр

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: ...
z-kzn-z
Отправлено: 06 Декабря, 2008 - 17:24:26
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Апр. 2008  
Откуда: Евпатория


Помог: 0 раз(а)




есть некий запрос SELECT * FROM table WHERE field LIKE "%something%".
как сделать, чтобы оператор LIKE не учитывал регистр символов?
или подскажите какой-нить другой способ поиска некоторого поля в таблице в опр. поле)


-----
There is nothing impossible...
 
 Top
Champion Супермодератор
Отправлено: 06 Декабря, 2008 - 18:44:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




WHERE upper(field) LIKE "%SOMETHING%".
 
 Top
z-kzn-z
Отправлено: 06 Декабря, 2008 - 18:47:50
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Апр. 2008  
Откуда: Евпатория


Помог: 0 раз(а)




ага, спасибо)
(Добавление)
а с кириллицей это работает? а то по-моему, нет.. во всяком случае у меня результата никакого


-----
There is nothing impossible...
 
 Top
Champion Супермодератор
Отправлено: 06 Декабря, 2008 - 20:57:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




С кириллицей разные чудеса случаются. Сделайте SELECT upper(кириллическое поле) и посмотрите поднимется оно в верхний регистр или нет
 
 Top
z-kzn-z
Отправлено: 06 Декабря, 2008 - 21:26:42
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Апр. 2008  
Откуда: Евпатория


Помог: 0 раз(а)




попробовал. вообще ничего не возвращает...
CODE (text):
скопировать код в буфер обмена
  1. MySQL вернула пустой результат (т.е. ноль строк). (запрос занял 0.0409 сек.)


-----
There is nothing impossible...
 
 Top
Champion Супермодератор
Отправлено: 07 Декабря, 2008 - 08:57:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Сделайте без условия выборку. Я это написал просто чтобы посмотреть, как upper() у вас себя с кириллицей поведет. Если в таблице есть записи, запрос без условия не может вернуть ноль строк
 
 Top
z-kzn-z
Отправлено: 07 Декабря, 2008 - 18:06:25
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Апр. 2008  
Откуда: Евпатория


Помог: 0 раз(а)




возвращает поля в таком регистре, в каком они и есть..


-----
There is nothing impossible...
 
 Top
Champion Супермодератор
Отправлено: 07 Декабря, 2008 - 18:24:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




тогда или процедуркой посимвольно или ждем подсказку более опытных людей
(Добавление)
Вот решени для interbase http://www[dot]ibase[dot]ru/devinfo/ibrusfaq[dot]htm
найдите строку Uppercase русских букв и читайте дальше

(Отредактировано автором: 07 Декабря, 2008 - 18:29:27)

 
 Top
z-kzn-z
Отправлено: 07 Декабря, 2008 - 19:03:26
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Апр. 2008  
Откуда: Евпатория


Помог: 0 раз(а)




ну, для interbase мне не надо..
ладно, ждем опытных)


-----
There is nothing impossible...
 
 Top
Champion Супермодератор
Отправлено: 07 Декабря, 2008 - 19:53:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




напишите процедурку и посимвольно...
 
 Top
valenok
Отправлено: 07 Декабря, 2008 - 19:56:02
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




SET NAMES перед выполнением запроса
и конвертирование в запросе:
Цитата:

SELECT *
FROM `abc`
WHERE `login` LIKE CONVERT( _utf8 'ждло' USING cp1251 )
COLLATE cp1251_general_ci
LIMIT 0 , 30

в качестве кодировки указывать кодировку поля в таблице
и заметьте не понадобились изменения регистра букв p1251_general_ci

(Отредактировано автором: 07 Декабря, 2008 - 19:59:42)



-----
Truly yours, Sasha.
 
My status
 Top
z-kzn-z
Отправлено: 08 Декабря, 2008 - 13:22:18
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Апр. 2008  
Откуда: Евпатория


Помог: 0 раз(а)




эээм... а где именно указывать кодировку таблицы?)

(Отредактировано автором: 08 Декабря, 2008 - 13:27:47)



-----
There is nothing impossible...
 
 Top
valenok
Отправлено: 08 Декабря, 2008 - 21:09:09
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Нужно было указывать при создании.. Но кодировка таблицы только определяет
кодировку полей в ней по умолчанию.


-----
Truly yours, Sasha.
 
My status
 Top
z-kzn-z
Отправлено: 08 Декабря, 2008 - 22:12:24
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Апр. 2008  
Откуда: Евпатория


Помог: 0 раз(а)




valenok, я знаю)
я имел ввиду, какая из кодировок в вашем примере (cp1251, utf8 или cp1251_general_ci) - кодировка поля в таблице?


-----
There is nothing impossible...
 
 Top
valenok
Отправлено: 09 Декабря, 2008 - 06:05:07
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Цитата:
WHERE `login` LIKE CONVERT( _utf8 'ждло' USING cp1251 )
COLLATE cp1251_general_ci


Этап 1 - конвертируем строку из кодировки utf8 в cp1251
Этап 2 - для сравнение значений используем кодировку поля, только caseInSensetive

Тоесть если вы изначально работаете с utf8 данными (рекомендовано),
то конвертировать ничего никуда не надо. А то что осталось в этапе 2 и есть кодировка
кодировка которую нужно указать для выборки.
--
У вас разве по умолчанию не стоит кодировка поля cp1251_general_ci ?


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB