Как сравнить строки в sql игнорирующий регистра?

Почему вы группируете по message_token?

Я думаю, что этот запрос будет действительным:

select `chat_messages`.`id`, `chat_messages`.`message`, `chat_messages`.`created_at` 
from `chat_messages`
where `chat_messages`.`message_token` = '144_141'
and `chat_messages`.`is_group` = 0 
and `chat_messages`.`deleted_at` is null 
order by `chat_messages`.`created_at` desc
limit 1

После вашего редактирования:


select `chat_messages`.`id`, `chat_messages`.`message`, `chat_messages`.`created_at`
from (select * from `chat_messages` order by `chat_messages`.`created_at` desc) as chat_messages
where `chat_messages`.`is_group` = 0
and `chat_messages`.`deleted_at` is null
and (`sender_id` =141 or `client_id` = 141)
group by `chat_messages`.`message_token`;

37
задан Jacob Schoen 11 August 2011 в 17:20
поделиться

5 ответов

Если вы соответствуете полному значению поля, используйте

WHERE UPPER(fieldName) = 'ANGEL'

РЕДАКТИРОВАТЬ: Из вашего комментария вы хотите использовать:

SELECT 
    RPAD(a.name, 10,'=') "Nombre del Cliente"
    , RPAD(b.name, 12,'*') "Nombre del Consumidor" 
FROM 
    s_customer a, 
    s_region b 
WHERE 
    a.region_id = b.id 
    AND UPPER(a.name) LIKE '%SPORT%' 
53
ответ дан 27 November 2019 в 04:22
поделиться

Вы можете использовать :

select * from your_table where upper(your_column) like '%ANGEL%'

В противном случае вы можете использовать:

select * from your_table where upper(your_column) = 'ANGEL'

Что будет более эффективно, если вы ищете совпадение без дополнительных символов до или после поля your_column , как предложил Гэри Рэй в своих комментариях.

12
ответ дан 27 November 2019 в 04:22
поделиться

Вы можете использовать ключевое слово UPPER :

SELECT *
FROM Customers
WHERE UPPER(LastName) = UPPER('AnGel')
18
ответ дан 27 November 2019 в 04:22
поделиться

Более подробно об ответе г-на Дредела и комментарии Tuinstoel. Данные в столбце будут храниться в конкретном случае, но вы можете изменить чувствительность к регистру в сеансе для сопоставления.

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

например

ALTER SESSION SET NLS_SORT=BINARY_CI;

Когда вы начинаете переходить на неанглийские языки, с акцентами и т. Д., Появляется дополнительная поддержка для нечувствительности к акценту. Некоторые возможности зависят от версии, поэтому ознакомьтесь с документом Globablization для вашей конкретной версии Oracle. Последний (11g) - здесь

2
ответ дан 27 November 2019 в 04:22
поделиться

Я не помню точного синтаксиса, но вы можете настроить столбец таблицы без учета регистра. Но будьте осторожны, потому что тогда вы больше не сможете соответствовать на основе случая, и если вы ХОТИТЕ «круто», чтобы не соответствовать «CoOl», это больше будет невозможно.

0
ответ дан 27 November 2019 в 04:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: