powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование числа в json
25 сообщений из 35, страница 1 из 2
Преобразование числа в json
    #39642728
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle 12.2
Преобразование числа в json
Код: plsql
1.
select json_object(key 'x1' value 0.0133, key 'x2' value 0.133) from dual t


Преобразуем как сегодня больше хочется, куда делся ведущий 0?
Код: plsql
1.
{"x1":.0133,"x2":0.133}


Понятно что можно to_char, но это же неправильно...
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39643356
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам себе злобный буратино - кто же тащит благоприобретенные багофичи в прод ранее чем через пару-тройку мажорных версий?
Оно же пока даже собственный синтаксис не выдерживают:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> select banner from v$version;

BANNER
----------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

SQL> select json_object(  'x1' is 0.0133 ) jo from dual t ;

JO
--
{"x1":.0133}

SQL> select json_object(  'x1' value '0.0133' format JSON ) jo from dual t ;

JO
--
{"x1" : 0.0133}


SQL> select json_object(  'x1' value 0.0133 format JSON ) jo from dual t ;

ORA-00932: inconsistent datatypes: expected CHAR got NUMBER 
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39643481
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
далеки вы от народа, поэтому и комментариев нет...
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39643800
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, почему-то возвращает в LAX формате. Я вписал FORMAT JSON STRICT, но ничего не поменялось. Написал чуваку из оракла, который этим занимается. Будем ждать.
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39643810
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vint, есть таблетка: Patch 27486853: MERGE REQUEST ON TOP OF 12.2.0.1.0 FOR BUGS 27450783 27459909
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39645176
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,
Спасибо, поставили - работает. Только таблетка для Линуха. для Винды нету и не предвидиться :)
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39645752
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй силу убеждения, Люк!
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39646317
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Код: plsql
1.
2.
3.
SQL> select json_object(  'x1' value 0.0133 format JSON ) jo from dual t ;

ORA-00932: inconsistent datatypes: expected CHAR got NUMBER 

не понимаю, зачем тут "format JSON" ?
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39646325
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--зачем тут "format JSON" ?

Чтим доку:
авторFORMAT JSON
This clause is optional and is provided for semantic clarity .
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39646342
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousfor semantic clarityбоюсь, увидев ваш "format JSON", он полагает, что тем самым ему как бы намекают, что подсунутое значение будет JSON-строкой. а вы ему пытаетесь присунуть числовой литерал. вот он и в недоумении
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39646379
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--боюсь
Не бойтесь.
Читайте документацию.
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39678324
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а теперь немного про преобразования timestamp в json. Все помнят что у systimestamp другой тип данных?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
with c as
 (select  systimestamp ct_change  from dual 
 --union all select to_timestamp('10-Sep-02 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF') from dual
 )
select 
       json_object(key 'ct_change' value c.ct_change)
  from c 


так получаем 40654, а убрав комментарий - работаем)
база все та же:
Код: plsql
1.
2.
3.
4.
5.
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
"CORE	12.2.0.1.0	Production"
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

...
Рейтинг: 0 / 0
Преобразование числа в json
    #39678907
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё там же всё те же:
Код: plsql
1.
2.
3.
with c as
 (select to_number('-0.' || lpad('9', 39, '9'), '9D' || lpad('9', 39, '9')) cn_value from dual)
select cn_value, json_object(key 'ct_change' value cn_value) from c


-1 ,{"ct_change":-99.9999999999999999999999999999999999999} результат воспроизводится только на точности в 38 символов после запятой и только при отрицательных значениях.
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39678981
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintрезультат воспроизводится только на точности в 38 символовЭто уже особенности промежуточной точности вычислений.
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39679189
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,
ты немного не понял -99.9999999999999999999999999999999999999
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39686190
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сегодня налетел на:
Row returned by JSON_OBJECTAGG ... RETURNING CLOB includes garbage character (Doc ID 2308008.1)
RETURNING clob нормально реализовать не смогли. даже с последними патчами второй раз воспроизводиться. а первый раз в сессии выполняется нормально.
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39686200
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сам бы так никогда не написал, но принесли на хвосте:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
with
  w_data as
  (
    select --+materialize
           *
      from (select 1 as f, sysdate as d1, sysdate + 100 as d2 from dual)
  ),
  w_tree as
  (
    select 1 as f, to_number(null) as pf, 1    as cf from dual union all
    select 2 as f, to_number(1)    as pf, null as cf from dual union all
    select 3 as f, to_number(1)    as pf, null as cf from dual union all
    select 4 as f, to_number(1)    as pf, null as cf from dual union all
    select 5 as f, to_number(null) as pf, 1    as cf from dual union all
    select 6 as f, to_number(5)    as pf, null as cf from dual union all
    select 7 as f, to_number(5)    as pf, null as cf from dual union all
    select 8 as f, to_number(7)    as pf, null as cf from dual
  )
select 1
  from w_tree t
       left join w_data d
              on connect_by_root(cf) = d.f
start with t.cf =1
connect by prior t.f = t.pf


в общем то естественная ora-600 на 12.2 :)
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39686732
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на 18 аналогично. но ничего, года через 3 заработает :)
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39686868
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,
3 года с выхода 12.2 вроде прошло))) у меня вообще сложилось впечатление что json они писали на коленке, причем это делал отдельный человек который никогда не видел oracle, при этом ему дали спецификацию на json_table не дав посмотреть на реализацию xml_table.
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39832528
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очередное беспощадное улучшение json2507724.1This behavior is expected. SELECT FOR UPDATE on a table with JSON data is disallowed. This restriction began being enforced in 19.1 and the patch was backported for earlier versions where it first appears in the 12.2.0.1.190115DBJAN2019RU.В 18.4 работает, в 19.3 дает ошибку:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
create table notajson(n number);

select t.n, (select count(*) from json_table('[]', '$[*]' columns (x varchar2(10 char))) jt) const_expr
from notajson t
for update of t.n;

ORA-01786: FOR UPDATE of this query expression is not allowed
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39848683
Фотография Pastic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал документацию .

Пробовал следующие варианты:
Код: sql
1.
2.
3.
4.
select json_objectagg(key dummy value rn) x
from
  (select rownum rn, dummy from dual
   connect by level<11)



Код: sql
1.
2.
3.
4.
select json_objectagg(key dummy value rn format json) x
from
  (select rownum rn, dummy from dual
   connect by level<11)



Код: sql
1.
2.
3.
4.
select json_object(key dummy value rn format json) x
from
  (select rownum rn, dummy from dual
   connect by level<11)



Код: sql
1.
2.
3.
4.
select json_object(key dummy value rn) x
from
  (select rownum rn, dummy from dual
   connect by level<11)



Все эти варианты возвращают ошибку ORA-00907: missing right parenthesis

Ещё я пробовал вариант отсюда :
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT JSON_OBJECTAGG( id VALUE text )
FROM   XMLTABLE(
         '/xml/*'
         PASSING XMLTYPE( '<xml><name>himanshu</name></xml>')
         COLUMNS id   VARCHAR2(200) PATH './name()',
                 text VARCHAR2(200) PATH './text()'
       );



Он тоже возвращает ORA-00907: missing right parenthesis.

И даже запрос из первого сообщения этой темы
Код: sql
1.
select json_object(key 'x1' value 0.0133, key 'x2' value 0.133) from dual

тоже возвращает эту ошбку. Это из-за того, что я это делаю на Oracle 12.1, а не на 12.2?

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64-bit Production
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39848719
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PasticЭто из-за того, что я это делаю на Oracle 12.1, а не на 12.2?Осознанно взять инструкцию от другой версии, получить неожиданный ожидаемый результат и взывать к форуму, чтобы кто-то сравнил за тебя документацию на разные версии? В недоумении...
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39916714
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще в копилку странностей json (19.5)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
> select t1s.nextval, json_object(t.dummy) j from dual t;

   NEXTVAL J                             
---------- ------------------------------
       123 {"dummy":"X"}                 

> select 123, json_object(t.*) j from dual t;

       123 J                             
---------- ------------------------------
       123 {"DUMMY":"X"}                 

> select t1s.nextval, json_object(t.*) j from dual t;

ORA-02287: sequence number not allowed here

Также json_object(*) несовместим c использованием plsql-переменных где-либо в том же запросе с ошибкой ORA-00904: "X": invalid identifier.
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39916746
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot -2-#22063575]Еще в копилку странностей json (19.5)
Код: plsql
1.
2.
3.
4.
5.
> select t1s.nextval, json_object(t.dummy) j from dual t;

   NEXTVAL J                             
---------- ------------------------------
       123 {"dummy":"X"}                 


а что в таком варианте
Код: plsql
1.
select t1s.nextval, json_object(t."DUMMY") j from dual t;
...
Рейтинг: 0 / 0
Преобразование числа в json
    #39916763
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123йй
а что в таком варианте
Различие в регистре sql-странно, но документировано.
Код: plsql
1.
2.
3.
4.
5.
select json_object(t.DummY) j from dual t;

J                             
------------------------------
{"DummY":"X"}

Естественно, sql-индусы plsql-индусам об этом не сообщили и при plsql-нормализации запроса идентификатор оказывается в верхнем регистре "DUMMY".

Вопрос был о более другой странности, что запрос с json_object во что-то преобразуется и сиквенс оказывается где-то в подзапросе.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование числа в json
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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