Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.04.05;
Скачать: CL | DM;

Вниз

Oracle: опять про null. почему ответ "-"?!   Найти похожие ветки 

 
OW ©   (2011-04-28 12:57) [0]

select nvl(null||"-","+") A from dual

разве он не должен null с "-" сконкатенейтить, получить null и выбрать "+"?


 
OW ©   (2011-04-28 13:00) [1]

очень нприятно получилось, если писать
nvl(A.REGION||";","")||nvl(A.LOCALITY||";","")||nvl(A.STREET_NAME||";","")
ожидается, что если есть именование, то оно будет закончено ;, а если нет - ничего не будет. А получается ";;Минина"


 
Медвежонок ХМЛ ©   (2011-04-28 13:03) [2]

decode(region,null,null,region || ";")

или поисковый кейс вместо декода, если это plsql.


 
OW ©   (2011-04-28 13:04) [3]


> Медвежонок ХМЛ ©   (28.04.11 13:03) [2]
> decode(

это понятно, и про case тоже
но почему nvl так работает?


 
Медвежонок ХМЛ ©   (2011-04-28 13:07) [4]

но почему nvl так работает?

Он как раз работает правильно.
select null ||"-" from dual


 
Медвежонок ХМЛ ©   (2011-04-28 13:09) [5]

а конкатенация так работает наверное потому, что иначе будет адский гитлер и холокост.

если надо склеить n значений, то пришлось бы помнить, что любой нулл все испортит и надо проверять


 
Kerk ©   (2011-04-28 13:13) [6]

Еще не надо забывать, что в оракле пустая строка и null - это одно и тоже.


 
Медвежонок ХМЛ ©   (2011-04-28 13:20) [7]

Еще не надо забывать, что в оракле пустая строка и null - это одно и тоже.

видимо ноги именно из этого и растут.
для mssql:

select null + "-"

результат будет нулл, а select "" + "-" будет "-"

и все потому что пустая строка там не нулл


 
Игорь Шевченко ©   (2011-04-28 13:40) [8]


> или поисковый кейс вместо декода, если это plsql.


даже если это SQL

WITH foo AS (
 SELECT "foo" bar FROM dual
 UNION ALL
 SELECT NULL FROM dual
)
SELECT CASE WHEN foo.bar IS NULL
        THEN NULL
        ELSE foo.bar||";"
      END
 FROM foo


 
OW ©   (2011-04-28 14:25) [9]


> видимо ноги именно из этого и растут.
> для mssql:
> select null + "-"
> результат будет нулл, а select "" + "-" будет "-"
> и все потому что пустая строка там не нулл

ну да, наверное.
миграция запросов .. несколько неожиданно все равно, на первый взгляд :)



Страницы: 1 вся ветка

Текущий архив: 2015.04.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
3-1303981058
OW
2011-04-28 12:57
2015.04.05
Oracle: опять про null. почему ответ "-"?!


15-1408429305
47RONYN
2014-08-19 10:21
2015.04.05
IP-телефония и Е1


15-1405510044
Kerk
2014-07-16 15:27
2015.04.05
Behavior-driven development (BDD) в Delphi


6-1275078357
olevacho_
2010-05-29 00:25
2015.04.05
Opera spider


4-1270793885
Kolan
2010-04-09 10:18
2015.04.05
Нe удается открыть вирт. ком-порт, работающий через usbser.sys