Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / json_textcontains и символ _ / 11 сообщений из 11, страница 1 из 1
23.11.2016, 22:06
    #39353097
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
Народ, есть тестовый пример:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create table json_data(id number, js clob)
/
insert into json_data values(1, '{"values":"RS_485"}')
/
CREATE INDEX json_docs_search_idx ON json_data(js)
  INDEXTYPE IS CTXSYS.CONTEXT
  PARAMETERS ('section group CTXSYS.JSON_SECTION_GROUP SYNC (ON COMMIT)')
/
select *
from json_data
where JSON_TEXTCONTAINS(js, '$.values', 'RS_485')  
/

select *
from json_data
where JSON_TEXTCONTAINS(js, '$.values', 'RS')
      and JSON_TEXTCONTAINS(js, '$.values', '485')  
/



Первый запрос не возвращает ничего, второй - возвращает, но печаль то в том, что символов _ может быть сколь угодно много. Да и вообще неясно, на чём следующем начнётся фигня. Предположительно на %. Есть мысли как обойти?
...
Рейтинг: 0 / 0
23.11.2016, 22:15
    #39353109
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
при этом запрос переписывается в
Код: plsql
1.
2.
3.
select *
from json_data
where "CTXSYS"."CONTAINS"("JSON_DATA"."JS",'RS_485 INPATH(/values)')>0
...
Рейтинг: 0 / 0
23.11.2016, 22:51
    #39353152
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
ShtockПервый запрос не возвращает ничего

Версия?

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
SQL> select  banner
  2    from  v$version
  3  /

BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE    12.1.0.2.0      Production
TNS for 64-bit Windows: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production

SQL> create table json_data(id number, js clob)
  2  /

Table created.

SQL> insert into json_data values(1, '{"values":"RS_485"}')
  2  /

1 row created.

SQL> CREATE INDEX json_docs_search_idx ON json_data(js)
  2    INDEXTYPE IS CTXSYS.CONTEXT
  3    PARAMETERS ('section group CTXSYS.JSON_SECTION_GROUP SYNC (ON COMMIT)')
  4  /

Index created.

SQL> select *
  2  from json_data
  3  where JSON_TEXTCONTAINS(js, '$.values', 'RS_485')  
  4  /

        ID JS
---------- --------------------------------------------------------------------------------
         1 {"values":"RS_485"}

SQL> select *
  2  from json_data
  3  where JSON_TEXTCONTAINS(js, '$.values', 'RS')
  4        and JSON_TEXTCONTAINS(js, '$.values', '485')  
  5  /

        ID JS
---------- --------------------------------------------------------------------------------
         1 {"values":"RS_485"}

SQL> 



SY.
...
Рейтинг: 0 / 0
23.11.2016, 22:56
    #39353158
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
BANNER
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE 12.1.0.2.0 Production
TNS for Linux: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production
...
Рейтинг: 0 / 0
23.11.2016, 22:57
    #39353160
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
а у тебя json bundle patch стоят? у меня да, но может они всё и портят. Можешь показать dbms_utility.expand_sql_text?
...
Рейтинг: 0 / 0
23.11.2016, 23:05
    #39353166
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
Shtockа у тебя json bundle patch стоят? у меня да, но может они всё и портят. Можешь показать dbms_utility.expand_sql_text?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL> set long 10000
SQL> variable c clob
SQL> begin
  2      dbms_utility.expand_sql_text(Q'[select *
  3  from json_data
  4  where JSON_TEXTCONTAINS(js, '$.values', 'RS_485')]',:c);
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL> print c

C
--------------------------------------------------------------------------------
SELECT "A1"."ID" "ID","A1"."JS" "JS" FROM "SCOTT"."JSON_DATA" "A1" WHERE "CTXSYS
"."CONTAINS"("A1"."JS",'{RS_485} INPATH(/values)')>0

SQL> 



SY.
...
Рейтинг: 0 / 0
23.11.2016, 23:14
    #39353176
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
вот он и ответ. А у меня оно не в ковычках.
...
Рейтинг: 0 / 0
23.11.2016, 23:15
    #39353177
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
т.е. не в скобках
...
Рейтинг: 0 / 0
23.11.2016, 23:28
    #39353187
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
странно, что тут не нашёл именно описания, что { и } значат. Выходит это именно целое слово.
...
Рейтинг: 0 / 0
24.11.2016, 00:08
    #39353218
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
...
Рейтинг: 0 / 0
31.03.2017, 13:17
    #39430854
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
json_textcontains и символ _
Народ, после установки последних патчей судя по всему (24968615) под оракл expand_sql_text не раскрывает sql как раньше. Там появляется новая какая-то функция json_textcontain2. А как посмотреть другим способом как textcontains преобразуется в contains?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / json_textcontains и символ _ / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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