powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / json_textcontains и символ _
11 сообщений из 11, страница 1 из 1
json_textcontains и символ _
    #39353097
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, есть тестовый пример:
Код: 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
json_textcontains и символ _
    #39353109
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при этом запрос переписывается в
Код: plsql
1.
2.
3.
select *
from json_data
where "CTXSYS"."CONTAINS"("JSON_DATA"."JS",'RS_485 INPATH(/values)')>0
...
Рейтинг: 0 / 0
json_textcontains и символ _
    #39353152
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
json_textcontains и символ _
    #39353158
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
json_textcontains и символ _
    #39353160
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у тебя json bundle patch стоят? у меня да, но может они всё и портят. Можешь показать dbms_utility.expand_sql_text?
...
Рейтинг: 0 / 0
json_textcontains и символ _
    #39353166
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
json_textcontains и символ _
    #39353176
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот он и ответ. А у меня оно не в ковычках.
...
Рейтинг: 0 / 0
json_textcontains и символ _
    #39353177
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. не в скобках
...
Рейтинг: 0 / 0
json_textcontains и символ _
    #39353187
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно, что тут не нашёл именно описания, что { и } значат. Выходит это именно целое слово.
...
Рейтинг: 0 / 0
json_textcontains и символ _
    #39353218
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
json_textcontains и символ _
    #39430854
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, после установки последних патчей судя по всему (24968615) под оракл expand_sql_text не раскрывает sql как раньше. Там появляется новая какая-то функция json_textcontain2. А как посмотреть другим способом как textcontains преобразуется в contains?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / json_textcontains и символ _
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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