Jump to content
  • 0

Регистр символов в БД


Shuranka
 Share

Question

Допустим, в базе хранится информация (слово), начинающееся с прописной буквы, а в запросе пользователь вводит со строчной. Что нужно сделать, чтобы при обращении к данным в БД не учитывался регистр символов, и чтобы пользователю не выводилось сообщение типа "Данные не найдены"?

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

сколько всего насоветовали... а все не в тему ;) человек что спрашивал? как сделать регистронезависимое обращение к базе, а не как поменять регистр в запросе ;D

учите матчасть, господа, ALTER DATABASE `db_name` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci, основное тут COLLATE cp1251_general_ci, где cp1251_general_ci - регистронезависимость, а cp1251_general_cs - было бы регистрозависимое

Link to comment
Share on other sites

  • 0
;) телодвижений с переводом регистра вручную больше и... ну не правильно оно, не делается так... это все равно что в регулярных выражениях не флаг i ставить, а самому в нужный регистр приводить %)
Link to comment
Share on other sites

  • 0

Несогласен со всеми ;) Преобразовывать в нужный регистр перед запросом не очень красиво и удобно имхо, а менять регистрозависимость таблицы и подавно.

Товарищ просил, чтобы при обращении к данным в БД не учитывался регистр, так для этого есть SQL оператор сравнения LIKE и его регистронезависимая версия ILIKE.

SELECT * FROM foo WHERE bar ILIKE 'text';

Link to comment
Share on other sites

  • 0

//ещ? немного флейма

Что-то я совсем уже отупел) Человек просит регистронезависимость, а я советую противоположное =)

2Сухов, автор скорее всего работает с mysql. Оператора ILIKE есть в PostgreSQL, но в документации mysql найти его не удалось (если вдруг он и существует, дайте знать).

Из той же документации (о операторе LIKE): Сравнение строк не зависит от регистра, если не используется представитель или ключевое слово BINARY.

Т.е. достаточно просто использовать оператор LIKE.

Link to comment
Share on other sites

  • 0
2Сухов, автор скорее всего работает с mysql. Оператора ILIKE есть в PostgreSQL, но в документации mysql найти его не удалось (если вдруг он и существует, дайте знать).

Верно, в мускуле ILIKE нет.

Из той же документации (о операторе LIKE): Сравнение строк не зависит от регистра, если не используется представитель или ключевое слово BINARY.

Т.е. достаточно просто использовать оператор LIKE.

Абсолютно верно. ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy