Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Я работаю с PHP и PostgreSQL Делаю запрос "SELECT * FROM tovari WHERE cd_name ~ '%".$searchfor."%' OR cd_rejisser ~ '%".$searchfor."%' OR cd_descr ~ '%".$searchfor."%' OR cd_actors ~ '%".$searchfor."%';"; При выполнении ничего не находит. Когда использую LIKE вместо ~ то находит, но регистр играет значение. Подскажите, може как-то по-другому в PostgreSQL запросі сотсавляют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 10:02 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
twistfireSELECT * FROM tovari WHERE cd_name ~ '%".$searchfor."%' .... Такая фигня действительно работать не будет. :) Это ж конструкция для LIKE (LIKE '%foobar%'). Для регекспов - просто cd_name ~ 'blablabla'. Зависимость от регистра устраняется примерно так : lower(cd_name) LIKE '%foobar%' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 10:42 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Да, для регекспов поиск с игнорированием регистра : cd_name ~* 'mask' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 10:47 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
не хочте делать ~* - поиск без учета регистра... Может я что-то неверно делаю Смотрите, какой в итоге запрос получается SELECT * FROM tovari WHERE cd_name ~* '%".$searchfor."%' OR cd_rejisser ~* '%".$searchfor."%' OR cd_descr ~* '%".$searchfor."%' OR cd_actors ~* '%".$searchfor."%';" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 14:17 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Выкинуть % из строки поиска! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 14:23 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
twistfireне хочте делать ~* - поиск без учета регистра... Может я что-то неверно делаю Смотрите, какой в итоге запрос получается SELECT * FROM tovari WHERE cd_name ~* '%".$searchfor."%' OR cd_rejisser ~* '%".$searchfor."%' OR cd_descr ~* '%".$searchfor."%' OR cd_actors ~* '%".$searchfor."%';" Если переменная $searchfor не является регулярным выражением, то используй конструкцию предложенную ХМ, а перед этим понизь регистр у строки $searchfor =) А вообще, на больших таблицах конструкции column LIKE '%value%' тормозят жутко :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 14:32 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Но, мне же необходимо делать такой запрос... У меня там записан тект неограниченной длины... Если я уберу % то, как я понимаю, я не смогу найти вхождение переменной $searchfor в поле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 15:32 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Вы понимаете неправильно. Тупая проверка: select 'abcde' ~* 'CD' = 'true' Вы вообще-то с регекспами знакомы? :) И совет - если уж запросы на поиск достаточно частые и данных много, рассмотрите испльзование полнотекстовго поиска, tsearch2 , например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 15:49 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
я начинаю понимать :) Что теперь вообще ничего не понимаю... Опишу ситуацию снова. Моя таблица - tovari в ней несколько полей. Провожу поиск по таким полям как cd_name, cd_rejisser, cd_descr, cd_actors Как мне организовать запрос, чтобы удовлетворяло таким запросам КРУЗ, крУз, ТОМ КРУЗ, тОм круз, если в поле cd_actors записано Том Круз. Я просто не могу понять (не программист, а проблему решить надо). Помогите с REgexp... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 16:04 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Вот неужели тяжело открыть консоль psql и вбить Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 16:17 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
twistfireя начинаю понимать :) Что теперь вообще ничего не понимаю... Опишу ситуацию снова. Моя таблица - tovari в ней несколько полей. Провожу поиск по таким полям как cd_name, cd_rejisser, cd_descr, cd_actors Как мне организовать запрос, чтобы удовлетворяло таким запросам КРУЗ, крУз, ТОМ КРУЗ, тОм круз, если в поле cd_actors записано Том Круз. Я просто не могу понять (не программист, а проблему решить надо). Помогите с REgexp... Для подобных запросов можно и без регулярных выражений обойтись :) Достаточно LIKE'а Пример: $searchStr = pg_escape_string(strtolower($searchfor)); $query = "SELECT * FROM tovari WHERE lower(cd_name) LIKE '%$searchStr%' "; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 16:39 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
XMВот неужели тяжело открыть консоль psql и вбить Код: plaintext 1. 2. Я же обїяснил... мне вообще ничего не доступно, как админу бд... Я удаленно только через клиент PHP подключаюсь А насчет, LIKE - попробую через 20 мин скажу.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 17:51 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
код PHP $searchfor=pg_escape_string(strtolower($searchfor)); запрос SELECT * FROM tovari WHERE lower(cd_name) LIKE '%круз%' OR lower(cd_rejisser) LIKE '%круз%' OR lower(cd_descr) LIKE '%круз%' OR lower(cd_actors) LIKE '%круз%'; Ничего не найдено.. Хотя запись есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 17:59 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Тяжко :) Берем табличку. CREATE TABLE test.test123 ( name varchar(64) NOT NULL ) WITH OIDS; Загоняем туда следующие слова. Круз Круффф КРУЗ КукуКруз КрузКуку Запрос: select * from test.test123 WHERE lower(name) like '%круз%' Ответ: Круз КРУЗ КукуКруз КрузКуку Всё отлично работает :) Возможно проблема в кодировке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 18:11 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Мне тоже тяжко :( но я все делаю аналогично. и не работает. Может быть, проблема в кодировке. Как исправить, эту "возможную" проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 21:18 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
Собственно, могут быть следующие проблемы: 1. Кодировка - проверить можно, выполнив запрос с указанием полностью поля, которое есть в базе. Этот случай должно быть достаточно просто исправить. 2. Локаль базы - может не работать lower() - проверка: select lower('ПроВерКа'). Если к нижнему регистру не приводится, то скорее всего инициализация (initdb) базы проходила в локали C , и о игнорировании регистра русских букв можно забыть, не проведя переинициализацию базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 09:18 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
А если бд будет переинициализир.? то все данные утеряны? И как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 13:05 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
twistfireА если бд будет переинициализир.? то все данные утеряны? И как это сделать? Ну, данные можно выгрузить перед переустановкой - через pg_dump, например, и потом обратно внести (в новую базу). Но если у Вас нет прав root, и PostgreSQL никогда не ставили, то никак. :( В принципе, можно слегка извратиться и преобразовать строку поиска, например, так (для CP-1251): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 13:27 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
а, если не секрет, что эта функция делает? изменяет символы?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 21:20 |
|
||
|
запрос на выборку, без учета регистра
|
|||
|---|---|---|---|
|
#18+
УРА!!!! ВСЕ СУПЕР РАБОТАЕТ. СПАСИБО огромное. ЧЕМ СМОГУ - ТЕМ ПОМОГУ. СПАСИБО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 21:36 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33086828&tid=2007219]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
138ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 528ms |

| 0 / 0 |
