За последние 24 часа нас посетили 42583 программиста и 1814 роботов. Сейчас ищут 877 программистов ...

без учета регистра

Тема в разделе "MySQL", создана пользователем Ximik, 26 июл 2007.

  1. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    Нужно проверить, есть ли в БД пользователь с таким именем, но без учета регистра. Как такое сделать?
     
  2. C

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

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    STRCMP(expr1,expr2)

    STRCMP() returns 0 if the strings are the same, -1 if the first argument is smaller than the second according to the current sort order, and 1 otherwise.

    mysql> SELECT STRCMP('text', 'text2');
    -> -1
    mysql> SELECT STRCMP('text2', 'text');
    -> 1
    mysql> SELECT STRCMP('text', 'text');
    -> 0

    STRCMP() uses the current character set when performing comparisons. This makes the default comparison behavior case insensitive unless one or both of the operands are binary strings.
     
  3. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    SELECT UPPER('VASYA') = UPPER('vasya');
    Вернет 1.

    Хотя по идее MySQL сравнивает их и так без учета регистра.

    SELECT 'VASYA' = 'vasya';
    Вернет 1.
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Коллэйшн на поле нужный выставить.
     
  5. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    Vitas, спасибо, вы правы. Видимо это от кодировки зависит.