powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос на замену значений (Оператор Case и Like).
6 сообщений из 6, страница 1 из 1
Запрос на замену значений (Оператор Case и Like).
    #40097143
twenty7even
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Помогите решить задачу. Предположим имеется таблица с полями (id/code/name). В поле код содержатся значения соответствующие определенной категории (могут содержаться в тексте, поэтому приходится использовать Like). К примеру ibm-25 - самолеты. ibm25-1 - вертолеты. Нужно написать запрос на выборку, который эти коды будет приводить в читабельный вид.

select distinct a.category, case WHEN a.category like '%ibm-25%' THEN 'самолеты'
WHEN a.category like '%25-1%' THEN 'вертолеты'
else 'Категория отсутствует в справочнике'

end AS "1"
from register.creative a

Сложность в том, что почему Like WHEN a.category like '%25-1%' THEN 'вертолеты' здесь мне все равно возвращает значение "самолеты".

Может у кого есть еще какие либо варианты решения задачи?
...
Рейтинг: 0 / 0
Запрос на замену значений (Оператор Case и Like).
    #40097154
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twenty7even,

У вас под маску %ibm-25% попадают оба значения, case всегда возвращает первый удачный вариант проверки, поэтому перепишите порядок условий проверки
...
Рейтинг: 0 / 0
Запрос на замену значений (Оператор Case и Like).
    #40097160
twenty7even
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff, я там опечатался. Можете подсказать как? просто не могу сообразить как мне поступить, т.к. коды могут начинаться одинаково c "ibm" ,а вот конечная часть разниться, где идут приставки с цифрами. Но мне лайк все равно возвращает одно и тоже
...
Рейтинг: 0 / 0
Запрос на замену значений (Оператор Case и Like).
    #40097190
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twenty7even,

у вас условия case должны идти в порядке от большей детализации маски к меньшей

Код: sql
1.
2.
3.
4.
5.
SELECT CASE
          WHEN a.[category] LIKE '%ibm-25-13%' THEN 'танки'
          WHEN a.[category] LIKE '%ibm-25-1%' THEN 'вертолеты'
          WHEN a.[category] LIKE '%ibm-25%' THEN 'самолеты'
     END
...
Рейтинг: 0 / 0
Запрос на замену значений (Оператор Case и Like).
    #40097212
twenty7even
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff, не знал этого. Благодарю за помощь. Сейчас попробую
...
Рейтинг: 0 / 0
Запрос на замену значений (Оператор Case и Like).
    #40097277
twenty7even
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff, Спасибо Вам огромное! Все получилось!!!!!!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос на замену значений (Оператор Case и Like).
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]