2016-03-07 53 views
0

我需要從具有international_prefix和local_prefix之類的圖像的表中檢索國家/地區。在Orientdb上使用append和substring查詢SQL

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 

修訂

試試看你能在球場上local_prefix場上international_prefix(NOTUNIQUE_HASH_INDEX)和一個插入兩個指數,一個(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 +帶有international_prefix和local_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來提高性能和使用RAM來減少結果集。 :( –

+0

你有多少條記錄? –

+0

有120,437條記錄。 –