2016-01-11 3 views
1

У меня есть таблица OrientDB с именем CalculationFunctionGroup, в которой у меня есть поле с именем functions.OrientDB использует LIKE в инкапсулированном поле

Это поле имеет содержание JSON как это:

[{"@type":"d","@version":0,"@class":"CalculationFunction","name":"AR_0015_0280","code":"//AR_0015_0280 OTTIMIZZATA/FORMATTATA\nvar worka01 = anagPay(\"AR_0015_0280\", -1);\nreturn worka01;","language":"Javascript"}]

Я хочу, чтобы извлечь строки, удовлетворяющие LIKE условие на code элемент JSON.

Я попробовал этот запрос:

SELECT FROM CalculationFunctionGroup 
WHERE functions.code LIKE '%OTTIMIZZATA%' 

Но количество извлекаемых строк НОЛЬ!

+0

Привет, что тип поля с именем функции? это ссылка? –

+0

Привет, это поле с типом EMBEDDEDLIST, а не ссылка на другую таблицу –

+0

Привет, что такое functions.code? Не могли бы вы отправить код класса CalculationFunction? Потому что в JSON-файле нет свойства функции. –

ответ

0

Попробуйте это:

select expand(distinct(rid)) 
from (select @rid,functions.code 
     from CalculationFunctionGroup unwind functions) 
where functions like "%OTTIMIZZATA%" 
+0

Хорошо, все нормально. Спасибо –

+0

Этот запрос неудовлетворительный вообще, потому что он выполняет совпадение на 'functions', а не на' functions.code', как указано OP. Рассмотрим, например, что произойдет, если в «имени» будет содержаться строка запроса. – peak