Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2015.04.05;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1408134602
Юрий
2014-08-16 00:30
2015.04.05
С днем рождения ! 16 августа 2014 суббота


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


2-1391396543
Alex80
2014-02-03 07:02
2015.04.05
Как отловить нажатия на стрелки, не блокируя их?


15-1408566603
Юрий
2014-08-21 00:30
2015.04.05
С днем рождения ! 21 августа 2014 четверг


15-1408434187
Пашка.
2014-08-19 11:43
2015.04.05
Принципы ООП





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский