Условные выражения в SQL-запросах Firebird
Условные выражения в SQL-запросах помогут вам избежать лишней обработки результатов средствами PHP. Вы можете использовать для каждого значения свои условия. Допустим у вас есть зона администратора. Имеется база данных с таблицей user. Допустим в таблице есть поле status. Поле status принимает следующие значения: user, moderator, admin, superadmin. Условные выражения помогут обработать строковые значения и вернуть из базы данных число вместо строки. Например, user = 0, moderator = 1, admin = 2. Функция UPPER() приводит значения к верхнему регистру.
# для авторизации, работа со строками
SELECT
CASE LOWER(STATUS)
WHEN 'user' THEN 0
WHEN 'moderator' THEN 1
WHEN 'admin' THEN 2
WHEN 'superadmin' THEN 3
ELSE 4
END
FROM USER
# переименование ID в строку
SELECT NAME,
CASE UPPER(SHOP_ID )
WHEN 1 THEN 'one'
WHEN 2 THEN 'two'
ELSE UPPER('no')
END
FROM SHOP
Вы можете использовать для каждого значения свои условия. Функция LOWER() приводит значения к нижнему регистру. Я применил сортировку при помощи ORDER BY. Вы можете сортировать по нескольким параметрам. Вы просто перечислите их через запятую. Например, ORDER BY NAME, LAST_CHANGE.
# без верхнего регистра
SELECT NAME,
CASE SHOP_ID
WHEN 1 THEN 'one'
WHEN 2 THEN 'two'
else LOWER('-NO-')
END
FROM SHOP
ORDER BY NAME
Вы можете переименовать поле при выводе значений. Один ключ массива будет иметь новое имя 'title'. Если вы применяете функцию LOWER, то вы можете в условиях учитывать новое начертание букв.
# условие + приведение к маленькому регистру
select
case LOWER(NAME)
when 'mersedes' then 'мерседес::2015'
when 'audi' then 'ауди::2015'
else '-НЕТ-'
end as title,
SHOP_ID
from SHOP