За последние 24 часа нас посетили 53996 программистов и 1636 роботов. Сейчас ищут 1129 программистов ...

не работает функция lower в запросе

Тема в разделе "PHP для новичков", создана пользователем quazare, 6 фев 2011.

  1. quazare

    quazare Активный пользователь

    С нами с:
    3 июн 2008
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Nsk
    Народ, приветствую,
    изпользую php 5.2+sqlite 2.8
    не работает функция lower в запросе

    select * from mytable lower(sql_text) like '%departments%'

    что недонатроено?
     
  2. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    с sqlite, никогда не сталкивался, поэтому пишу что думаю, а не знаю наверняка

    1) Это точно. Нарушен sql синтаксис, перед lower должен быть WHERE:
    [sql]SELECT * FROM mytable WHERE lower(sql_text) LIKE '%departments%'[/sql]

    оператор like регистронезависимый, поэтому функция lower ничего не даст
    [sql]SELECT * FROM mytable WHERE sql_text LIKE '%departments%'[/sql]

    2) В mysql существует проблема, когда кодировка клиента не согласована с кодировкой сервера, при этом функции и операторы не дают нужного эффекта, для оператора like характерно появление регистрозависимости.

    3) Как сказано в документации sqlite, функция lower работает только для ASCII символов, для всех других нужно некое ICU расширение

    http://www.sqlite.org/lang_corefunc.html#lower

    Если я что-то неправильно разъяснил, надеюсь меня поправят более компетентные люди