转义 JCR SQL2 查询中的特殊字符
Escape special characters in JCR SQL2 Query
我正在使用如下 JCR SQL2 查询:
SELECT parent.* FROM [rep:User] AS parent INNER JOIN [nt:unstructured] AS child ON ISCHILDNODE(child,parent) WHERE ISDESCENDANTNODE(parent,'/website/test/users') AND (UPPER(child.[email]) ='firstname_lastname@testemail.com') AND (child.[email] IS NOT NULL)
在这种情况下我得到了正确的请求。
但是如何在 JCR SQL2 查询中转义电子邮件中的撇号?
例如,如果我搜索 firstname_last'name@testemail.com
,我会得到 java.text.ParseException。
我如何转义 JCR SQL2 查询中的特殊字符?
您可以使用单引号/撇号 '
作为转义字符。但是,我怀疑您的查询是否会 return 结果,因为您正在将 repo 中的大写值与查询中的小写值进行比较。
添加了下面的查询,没有转换为大写和转义撇号。
SELECT parent.* FROM [rep:User] AS parent INNER JOIN [nt:unstructured] AS child ON ISCHILDNODE(child,parent) WHERE ISDESCENDANTNODE(parent,'/website/test/users') AND (child.[email] ='firstname_last''name@testemail.com') AND (child.[email] IS NOT NULL)
我正在使用如下 JCR SQL2 查询:
SELECT parent.* FROM [rep:User] AS parent INNER JOIN [nt:unstructured] AS child ON ISCHILDNODE(child,parent) WHERE ISDESCENDANTNODE(parent,'/website/test/users') AND (UPPER(child.[email]) ='firstname_lastname@testemail.com') AND (child.[email] IS NOT NULL)
在这种情况下我得到了正确的请求。
但是如何在 JCR SQL2 查询中转义电子邮件中的撇号?
例如,如果我搜索 firstname_last'name@testemail.com
,我会得到 java.text.ParseException。
我如何转义 JCR SQL2 查询中的特殊字符?
您可以使用单引号/撇号 '
作为转义字符。但是,我怀疑您的查询是否会 return 结果,因为您正在将 repo 中的大写值与查询中的小写值进行比较。
添加了下面的查询,没有转换为大写和转义撇号。
SELECT parent.* FROM [rep:User] AS parent INNER JOIN [nt:unstructured] AS child ON ISCHILDNODE(child,parent) WHERE ISDESCENDANTNODE(parent,'/website/test/users') AND (child.[email] ='firstname_last''name@testemail.com') AND (child.[email] IS NOT NULL)