我有一個字符串屬性在我的節點,其中的字符串的長度不固定。 現在我必須通過這個屬性來搜索正確的節點,但是我從另一個系統得到了一個固定長度的值。例如,我的節點的值爲'0123',但我得到信息'000123'進行搜索。neo4j密碼左填充字符串在哪裏條款
我需要在像用零左填充的函數,並且該where子句等
MATCH(一個:LABEL)其中leftPad(a.property,如圖6所示, '0')= '000123' 返回a LIMIT 1
這是類似的事情嗎?
我有一個字符串屬性在我的節點,其中的字符串的長度不固定。 現在我必須通過這個屬性來搜索正確的節點,但是我從另一個系統得到了一個固定長度的值。例如,我的節點的值爲'0123',但我得到信息'000123'進行搜索。neo4j密碼左填充字符串在哪裏條款
我需要在像用零左填充的函數,並且該where子句等
MATCH(一個:LABEL)其中leftPad(a.property,如圖6所示, '0')= '000123' 返回a LIMIT 1
這是類似的事情嗎?
你可以這樣做:
MATCH (a:LABEL)
WHERE SUBSTRING('00000', 0, SIZE(a.property)) + a.property = '000123'
RETURN a
LIMIT 1;
或者,如果所有的字符都是數字,那麼你可以這樣做:
MATCH (a:LABEL)
WHERE TOINT(a.property) = TOINT('000123')
RETURN a
LIMIT 1;
但是,如果您只能將property
值作爲整數存儲在第一位,並將其與整數進行比較,則該值將最快。這可能很容易做到,具體取決於你的情況。
MATCH (a:LABEL)
WHERE a.property = 00
RETURN a
LIMIT 1;
與reduce試試:
MATCH (a:LABEL)
WHERE REDUCE(lp='', n in RANGE(0,5-size(a.name)) | lp+'0')+a. a.property = '000123'
RETURN a
MATCH (a:LABEL)
WHERE a.property =~ '(0){0,3}123'
RETURN a
謝謝,第一個解決方案適用於我。 =) –
'substring(「00000」,length(s))'看起來比'substring(「00000」,0,5-length(s))'更有效率:) –
好點。我已經更新了我的答案。 – cybersam