RETURN substring('hello', 1, 3) # 结果"ell"
RETURN substring('hello', 2) # 结果"llo"
字符串匹配筛选
STRATS WITH
运算符用于匹配字符串开头的文本,会区分大小写
# 结果返回以Pet开头的人名
MATCH (n)
WHERE n.name STARTS WITH 'Pet'
RETURN n.name
ENDS WITH
运算符用于匹配字符串末尾的文本,也是区分大小写的。
# 结果返回以ter结尾的人名
MATCH (n)
WHERE n.name ENDS WITH 'ter'
RETURN n.name
CONTAINS
运算符用来查找一个文本字符串中是否还有指定的字符串
# 结果返回包含ete的人名
MATCH (n)
WHERE n.name CONTAINS 'ete'
RETURN n.name
NOT
从结果中排除给定字符串的所有匹配项
# 结果返回所有节点的名称中不以y结尾的节点。
MATCH (n)
WHERE NOT n.name ENDS WITH 'y'
RETURN n.name
正则表达式进行匹配=~
cypher的正则表达式语法是从Java正则表达式继承过来的。
常见的有:
-
(?i) 不区分大小写
-
(?s) 多行
-
(?m) dotall
如: 查询以Tim开头的名称
MATCH (n)
WHERE n.name =~ 'Tim.*'
RETURN n.name
apoc 包的字符串操作函数
函数 | 函数描述 |
---|
apoc.text.indexOf(text, lookup, offset=0, to=-1==len) | 查找文本中查找字符串的第一次出现,从包含(包括)到排除(exclusive),如果未找到则为-1,如果text为null,则为null。 |
apoc.text.indexesOf(text, lookup, from=0, to=-1==len) | 查找文本中所有出现的查找字符串,返回列表,从包含列表到排除列表,如果找不到,则为空列表,如果text为null,则返回null。 |
apoc.text.replace(text, regex, replacement) | 将给定字符串中与给定正则表达式匹配的每个子字符串替换为给定替换。 |
apoc.text.regexGroups(text, regex) | 返回一个包含每个匹配的嵌套数组的数组。内部数组包含所有匹配组。 |
apoc.text.join([‘text1’,‘text2’,…], delimiter) | 用给定的分隔符连接给定的字符串。 |
apoc.text.format(text,[params],language) | sprintf使用给定的参数和可选的参数语言格式化字符串(默认值为’en’)。 |
apoc.text.lpad(text,count,delim) | 左垫字符串到给定的宽度 |
apoc.text.rpad(text,count,delim) | 右垫字符串到给定的宽度 |
apoc.text.random(length, [valid]) | 返回指定长度的随机字符串 |
apoc.text.capitalize(text) | 大写单词的第一个字母 |
apoc.text.capitalizeAll(text) | 大写每个单词的第一个字母 |
apoc.text.decapitalize(text) | 将单词的第一个字母大写 |
apoc.text.decapitalizeAll(text) | 将所有单词的首字母大写 |
apoc.text.swapCase(text) | 交换字符串的大小 |
apoc.text.camelCase(text) | 将字符串转换为camelCase |
apoc.text.upperCamelCase(text) | 将字符串转换为UpperCamelCase |
apoc.text.snakeCase(text) | 将字符串转换为蛇形 |
apoc.text.toUpperCase(text) | 将字符串转换为UPPER_CASE |
apoc.text.charAt(text, index) | 返回给定索引处字符的十进制值 |
apoc.text.code(codepoint) | 返回给定代码点的unicode字符 |
apoc.text.hexCharAt(text, index) | 返回给定索引处字符的十六进制值字符串 |
apoc.text.hexValue(value) | 返回给定值的十六进制值字符串 |
apoc.text.byteCount(text,[charset]) | 返回文本的大小(以字节为单位) |
apoc.text.bytes(text,[charset]) - return bytes of the text | apoc.text.toCypher(值,{skipKeys,keepKeys,skipValues,keepValues,skipNull,node,relationship,start,end}) |
tries it’s best to convert the value to a cypher-property-string | apoc.text.base64Encode(text)-使用Base64编码字符串 |
apoc.text.base64Decode(text) - Decode Base64 encoded string | apoc.text.base64UrlEncode(url)-使用Base64编码url |
字符串操作符
在某些时候,需要将两个字符串连接起来,这个时候就需要用到 +字符串运算符
字符串基本操作函数函数 函数用途 lTrim() 删除字符串左边多余的空格,例子 RETURN lTrim(' hello') rTrim() 删除字符串右边多余的空格,例子 RETURN rTrim('hello ') trim() 删除字符串左右两边多余的空格,例子RETURN trim(' hello ') replace() 替换字符串,例子RETURN replace("hello", "l", "w") reverse() ...
UPPER&LOWER
UPPER它需要一个字符串作为输入并转换为大写字母。 所有CQL函数应使用“()”括号。
LOWER它需要一个字符串作为输入并转换为小写字母。 所有CQL函数应使用“()”括号。
UPPER函数语法
UPPER (<input-string>)
LOWER函数语法
LOWER (<input-string>)
例如我们首先创建...
1) 使用 =~’.模糊匹配对象.’ 进行表示
匹配关系MATCH p=()-[r:company_notice]->() where r.CATE=~'.*反.*' RETURN p
匹配节点match (n:notice) where n.TITLE=~'.*2008.*' return n
2)使用关键字 starts with、 ends with、Contains 进行表示
starts with
匹配关系MATCH p=()-[r:company_
RETURN ID(p),LOWER(p.character)
match(p:Person) return
p.character,lower(p.character),p.name,substring(p.name,2),replace(p.name,"子","z
MATCH (p:Person)
RETURN MAX(p.money),SUM(p.money)
match p =
match(emp) where emp.name =~'.*haha.*' return emp
现有节点创建关系
MATCH (cust:Customer),(cc:CreditCard)
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
Skip 和limi
在 Neo4j 中,可以通过编辑 Neo4j 配置文件来调整最大字符串长度的设置。以下是具体步骤:
1. 打开 Neo4j 的配置文件 `neo4j.conf`,可以在 Neo4j 安装目录下的 `conf` 文件夹中找到该文件。
2. 在该文件中找到以下设置:
# Maximum size of strings that will be indexed.
# This value must be at least as large as the longest token (in terms of UTF-8 bytes)
# that will be indexed (default is 20).
#dbms.index.lucene.max_string_length=20
3. 将 `dbms.index.lucene.max_string_length` 的值修改为所需的最大字符串长度。例如,将其修改为 50:
dbms.index.lucene.max_string_length=50
4. 保存文件并重新启动 Neo4j 服务器,使配置生效。
注意:修改最大字符串长度可能会影响索引的性能和内存占用。因此,应该根据实际情况进行调整。