|
Запрос на замену значений (Оператор Case и Like).
|
|||
---|---|---|---|
#18+
Всем привет! Помогите решить задачу. Предположим имеется таблица с полями (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 'вертолеты' здесь мне все равно возвращает значение "самолеты". Может у кого есть еще какие либо варианты решения задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 12:31 |
|
Запрос на замену значений (Оператор Case и Like).
|
|||
---|---|---|---|
#18+
twenty7even, У вас под маску %ibm-25% попадают оба значения, case всегда возвращает первый удачный вариант проверки, поэтому перепишите порядок условий проверки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 12:45 |
|
Запрос на замену значений (Оператор Case и Like).
|
|||
---|---|---|---|
#18+
felix_ff, я там опечатался. Можете подсказать как? просто не могу сообразить как мне поступить, т.к. коды могут начинаться одинаково c "ibm" ,а вот конечная часть разниться, где идут приставки с цифрами. Но мне лайк все равно возвращает одно и тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 12:49 |
|
Запрос на замену значений (Оператор Case и Like).
|
|||
---|---|---|---|
#18+
twenty7even, у вас условия case должны идти в порядке от большей детализации маски к меньшей Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 13:36 |
|
Запрос на замену значений (Оператор Case и Like).
|
|||
---|---|---|---|
#18+
felix_ff, не знал этого. Благодарю за помощь. Сейчас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 14:26 |
|
|
start [/forum/topic.php?fid=46&msg=40097143&tid=1684312]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
123ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 232ms |
0 / 0 |