我有一个字符串属性在我的节点,其中的字符串的长度不固定。 现在我必须通过这个属性来搜索正确的节点,但是我从另一个系统得到了一个固定长度的值。例如,我的节点的值为'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