training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Условные выражения в SQL-запросах Firebird

Создано: 05 августа 2015Автор: Егор Астапов3011 просмотровСложность: легкий

Условные выражения в 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

Комментарии

реклама