我的节点中有一个String属性,其中String的长度没有修复。 现在我必须通过此属性搜索正确的节点,但我从另一个系统获得固定长度值。例如,我的节点具有值' 0123'但我得到了信息' 000123'寻找。
我需要一个像Zeros左边填充的函数,这个在Where子句中,如
MATCH(a:LABEL),其中leftPad(a.property,6,' 0')=' 000123'回来一个 限制1
这样的事情有可能带来良好的表现吗?
答案 0 :(得分:5)
你可以这样做:
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 = 000123
RETURN a
LIMIT 1;
答案 1 :(得分:0)
使用reduce尝试:
MATCH (a:LABEL)
WHERE REDUCE(lp='', n in RANGE(0,5-size(a.name)) | lp+'0')+a. a.property = '000123'
RETURN a
或使用regular expression尝试:
MATCH (a:LABEL)
WHERE a.property =~ '(0){0,3}123'
RETURN a