2016-03-07 2 views
0

Мне нужно получить страну из числа, имеющего таблицу с international_prefix и local_prefix как изображение.Query SQL на Orientdb с добавлением и подстрокой

enter image description here

Это испытание, которое я сделал, но, к сожалению, не будет работать.

SELECT * 
FROM core_phone_prefix 
WHERE (("+393925559000").asString()).left(international_prefix.append(local_prefix).length()) = international_prefix.append(local_prefix) 

ответ

0

Вы можете попробовать с этим запросом

select country from( 
    select number.left(international_prefix.append(local_prefix).length()) as a, international_prefix.append(local_prefix) as b, country from (
     select international_prefix, "+393925559000" as number, country, local_prefix from core_phone_prefix 
    ) 
) where a = b 

Обновлено

Вы можете вставить два индекса, один на поле international_prefix (NOTUNIQUE_HASH_INDEX) и один на поле local_prefix (NOTUNIQUE_HASH_INDEX)

Вы можете использовать этот запрос

select expand($a) from (select "+393925559000" as number from core_phone_prefix limit 1) 
    let $a=(select from core_phone_prefix WHERE international_prefix = $parent.current.number.left(international_prefix.length()) 
      and local_prefix = $parent.current.number.subString(international_prefix.length(),international_prefix.append(local_prefix).length())) limit -1 

Позвольте мне знать

+0

Это работает, но это занимает 5 секунд для запроса :( –

+0

@ ClaudioƜǝısMulas Я отредактировал мой ответ –

0

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

С этим я сравнить только приставкой

select distinct(country) as country from(select international_prefix, "+393925559000" as number, country, local_prefix from core_phone_prefix) where international_prefix=number.subString(0,international_prefix.length()) 

Вместо с этим я сравниваю international_prefix + local_prefix с параметром international_prefix и local_prefix номера

select country as country from(select international_prefix, "+393925559000" as number, country, local_prefix from core_phone_prefix) where international_prefix.append(local_prefix)=number.subString(0,international_prefix.append(local_prefix).length()) 

Надеется, что это помогает,

Позволь мне знать,

+0

Это то, что я уже пробовал. Запрос возвратил результирующий набор с более чем 10000 записями. Проверьте, действительно ли вам нужны все эти записи, или уменьшите набор результатов, используя LIMIT для повышения производительности и использования ОЗУ. :( –

+0

Сколько у вас записей? –

+0

Есть 120,437 записей. –

Смежные вопросы