Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / приколы sql в db2 / 16 сообщений из 16, страница 1 из 1
26.03.2014, 10:18
    #38596627
Toshkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
приколы db2:

values varchar_format(null, 'dd.mm.yyyy');
возвращает null

values nvl(varchar_format(null, 'dd.mm.yyyy'), case when 1 = 1 then '' else 'нет' end);
6 пробелов

КАК???
...
Рейтинг: 0 / 0
26.03.2014, 11:07
    #38596678
CawaSPb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
Toshkin,

The NVL function returns the first argument that is not null (синоним COALESCE()).

Код: sql
1.
2.
3.
4.
5.
6.
7.
values (
  varchar_format(null, 'dd.mm.yyyy')
 ,case when 1 = 1 then '' else 'нет' end
 ,nvl(varchar_format(null, 'dd.mm.yyyy'), case when 1 = 1 then '' else 'нет' end)
);
------------------
-- NULL, '', ''


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
describe
values (
  varchar_format(null, 'dd.mm.yyyy')
 ,case when 1 = 1 then '' else 'нет' end
 ,nvl(varchar_format(null, 'dd.mm.yyyy'), case when 1 = 1 then '' else 'нет' end)
);

 Column Information

 Number of columns: 3

 SQL type              Type length  Column name                     Name length
 --------------------  -----------  ------------------------------  -----------
 449   VARCHAR                 254  1                                         1
 448   VARCHAR                   6  2                                         1
 448   VARCHAR                 254  3                                         1

Что странного???
...
Рейтинг: 0 / 0
26.03.2014, 11:15
    #38596689
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
Toshkin,

А что вы ожидаете от
varchar_format(null, 'dd.mm.yyyy')
?

У вас что,
values length(nvl(varchar_format(null, 'dd.mm.yyyy'), case when 1 = 1 then '' else 'нет' end))
возвращает 6?
Если да, то что это за версия db2?
...
Рейтинг: 0 / 0
26.03.2014, 11:27
    #38596699
Toshkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
CawaSPb,

я, наверно, уже слишком долго работаю программистом, отстал от новых веяний...
но, по-моему case в данном случае должен вернуть пустую строку, а не 6 пробелов
...
Рейтинг: 0 / 0
26.03.2014, 11:31
    #38596705
Toshkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
CawaSPbToshkin,

SQL type Type length Column name Name length
-------------------- ----------- ------------------------------ -----------
449 VARCHAR 254 1 1
448 VARCHAR 6 2 1
448 VARCHAR 254 3 1

а вот здесь db2 как раз и врёт - получается, что он возвращает CHAR, а не VARCHAR
...
Рейтинг: 0 / 0
26.03.2014, 11:33
    #38596710
Toshkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
Mark BarinsteinToshkin,

А что вы ожидаете от
varchar_format(null, 'dd.mm.yyyy')
?

У вас что,
values length(nvl(varchar_format(null, 'dd.mm.yyyy'), case when 1 = 1 then '' else 'нет' end))
возвращает 6?
Если да, то что это за версия db2?

6 пробелов
v.10.5.1
...
Рейтинг: 0 / 0
26.03.2014, 11:34
    #38596713
Toshkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
ToshkinMark BarinsteinToshkin,

А что вы ожидаете от
varchar_format(null, 'dd.mm.yyyy')
?

У вас что,
values length(nvl(varchar_format(null, 'dd.mm.yyyy'), case when 1 = 1 then '' else 'нет' end))
возвращает 6?
Если да, то что это за версия db2?

6 пробелов
v.10.5.1

извините, невнимательно прочитал, да, возвращает 6
...
Рейтинг: 0 / 0
26.03.2014, 12:28
    #38596795
n&n
n&n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
Toshkin,

можете показать переменные профайла?
какая-нибудь совместимость ( с oracle например) включена?
...
Рейтинг: 0 / 0
26.03.2014, 12:54
    #38596831
Toshkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
n&nToshkin,

можете показать переменные профайла?
какая-нибудь совместимость ( с oracle например) включена?
да, совместимость с oracle включена
...
Рейтинг: 0 / 0
26.03.2014, 13:15
    #38596860
CawaSPb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
ToshkinCawaSPbToshkin,

SQL type Type length Column name Name length
-------------------- ----------- ------------------------------ -----------
449 VARCHAR 254 1 1
448 VARCHAR 6 2 1
448 VARCHAR 254 3 1

а вот здесь db2 как раз и врёт - получается, что он возвращает CHAR, а не VARCHAR

А что у вас describe говорит?
И чем вы вытаскиваете данные? Преобразование VARCHAR -> CHAR может происходить в вашем приложении (как попросите при биндинге параметра)?

VARCHAR(6) само по себе корректно - база, надо пологать, в UTF-8, 'нет' ложится в 6 байт. От этого наследуется тип всего выражения CASE (как от самого длинного варианта).
...
Рейтинг: 0 / 0
26.03.2014, 13:46
    #38596910
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
CawaSPb,

На моей 10.5.3 length(nvl(...)) и nvl(...) возвращают NULL.

У вас что выдает:
Код: sql
1.
2.
3.
select name, value
from sysibmadm.dbcfg
where name like '%compat%'
...
Рейтинг: 0 / 0
26.03.2014, 13:50
    #38596917
Toshkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
CawaSPb,
CHARACTER выдаёт, в clp то же самое
...
Рейтинг: 0 / 0
26.03.2014, 14:13
    #38596961
n&n
n&n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
ToshkinCHARACTER выдаёт, в clp то же самое
это преобразование по идее и зависит от включения соотв. режима совместимости (в db2чегототам_vector).
короткие строки возвращаются как тип char.
...
Рейтинг: 0 / 0
26.03.2014, 14:19
    #38596966
CawaSPb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
Mark Barinstein,

У нас COMPATIBILITY ни с чем не включено:
Код: plaintext
1.
2.
'number_compat'    'OFF'
'varchar2_compat'  'OFF'
'date_compat'      'OFF'

Toshkin,
Да, это фокусы COMPATIBILITY с Ораклом:
Character and graphic constant handling
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
------------------------------------------------------------
Effects
After you enable the support, constants are handled as follows:

 *    Character string constants whose lengths are less than or equal to 254 bytes have a data type of CHAR. 
*    Graphic string constants whose lengths are less than or equal to 254 bytes have a data type of GRAPHIC.
*    Character string constants whose lengths are greater than 254 bytes have a data type of VARCHAR.
*    Graphic string constants whose lengths are greater than 254 bytes have a data type of VARGRAPHIC.
------------------------------------------------------------
...
Рейтинг: 0 / 0
26.03.2014, 14:30
    #38596985
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
CawaSPb,

Я ошибся адресатом, я у ТС спрашивал.
У меня такой же эффект, если база создана не при влюченной переменной, а потом эту переменную включить.
...
Рейтинг: 0 / 0
26.03.2014, 14:58
    #38597019
Toshkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приколы sql в db2
CawaSPbMark Barinstein,

У нас COMPATIBILITY ни с чем не включено:
Код: plaintext
1.
2.
'number_compat'    'OFF'
'varchar2_compat'  'OFF'
'date_compat'      'OFF'

Toshkin,
Да, это фокусы COMPATIBILITY с Ораклом:
Character and graphic constant handling
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
------------------------------------------------------------
Effects
After you enable the support, constants are handled as follows:

 *    Character string constants whose lengths are less than or equal to 254 bytes have a data type of CHAR. 
*    Graphic string constants whose lengths are less than or equal to 254 bytes have a data type of GRAPHIC.
*    Character string constants whose lengths are greater than 254 bytes have a data type of VARCHAR.
*    Graphic string constants whose lengths are greater than 254 bytes have a data type of VARGRAPHIC.
------------------------------------------------------------

так если я 100 (Character literals) выключу, поддержка oracle будет работать (у меня просто тестового сервера нету..)
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / приколы sql в db2 / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]