В архитектурном шаблоне MVC JSP представляют собой слой «Вид». Встраивание java-кода в JSP считается плохой практикой. Вы можете использовать JSTL , freeMarker , скорость с JSP как «движок шаблона». Поставщик данных для этих тегов зависит от структуры, с которой вы имеете дело. Struts 2
и webwork
в качестве реализации шаблона MVC использует OGNL «очень интересный метод для раскрытия свойств Beans для JSP».
select type, craft, sum(nvl(regular,0) + nvl(overtime,0)) as total_hours
from hours_t
group by type, craft
order by type, craft
NVL (значение, значение по умолчанию) является функцией, которую Вы ищете.
select type, craft, sum(NVL(regular, 0) + NVL(overtime, 0) ) as total_hours
from hours_t
group by type, craft
order by type, craft
Oracle имеют 5 СВЯЗАННЫХ С ПУСТЫМ УКАЗАТЕЛЕМ функций:
NVL:
NVL(expr1, expr2)
NVL позволяет Вам заменить пустой указатель (возвратился как пробел) со строкой в результатах запроса. Если expr1 является пустым, то NVL возвращает expr2. Если expr1 не является пустым, то NVL возвращает expr1.
NVL2:
NVL2(expr1, expr2, expr3)
NVL2 позволяет Вам определить значение, возвращенное запросом на основе того, является ли указанное выражение нулевым или не пустым. Если expr1 не является пустым, то NVL2 возвращает expr2. Если expr1 является пустым, то NVL2 возвращает expr3.
COALESCE(expr1, expr2, ...)
, ОБЪЕДИНЯЮТ, возвращает первый непустой указатель expr в списке выражений. По крайней мере одним expr не должен быть литеральный ПУСТОЙ УКАЗАТЕЛЬ. Если все случаи expr оценивают к пустому указателю, то функциональный пустой указатель возвратов.
NULLIF(expr1, expr2)
NULLIF сравнивает expr1 и expr2. Если они равны, то функция возвращает пустой указатель. Если они не равны, то функция возвращает expr1. Вы не можете определить литеральный ПУСТОЙ УКАЗАТЕЛЬ для expr1.
LNNVL(condition)
[еще 1135] информация о [1 111] Функции SQL OracleLNNVL обеспечивает краткий способ оценить условие, когда один или оба операнда условия могут быть пустыми.
Другие ответы относительно использования nvl () корректны однако, ни один, кажется, не обращается к более угловой точке:
Должен, Вы даже иметь АННУЛИРУЕТЕ в этом столбце?
у них есть значение кроме 0?
Это походит на случай, где у Вас должно быть ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ NOT NULL 0 на th ecolumn
Ответ с самым высоким рейтингом с NVL полностью действителен. Если у Вас есть интерес к созданию Вашего более портативного кода SQL, Вы могли бы хотеть к варианту использования, который поддерживается с тем же синтаксисом и в Oracle Server и в SQL Server:
select
type,craft,
SUM(
case when regular is null
then 0
else regular
end
+
case when overtime is null
then 0
else overtime
end
) as total_hours
from
hours_t
group by
type
,craft
order by
type
,craft
Необходимо использовать функцию NVL, например,
СУММА (NVL (регулярный, 0) + NVL (сверхурочное время, 0))
select type, craft, sum(NVL(regular, 0) + NVL(overtime, 0)) as total_hours
from hours_t
group by type, craft
order by type, craft