Экранирование специальных символов в 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]) ='[email protected]') AND (child.[email] IS NOT NULL)

В этом случае я получаю правильные результаты.

Но как я могу избежать апострофа в электронной почте в запросе JCR SQL2? Например, если я ищу firstname_last'[email protected], я получаю java.text.ParseException. Как я могу избежать специальных символов в запросе JCR SQL2?


person PV_PN    schedule 05.08.2020    source источник


Ответы (1)


Потенциально вы можете использовать одинарную кавычку/апостроф ' в качестве escape-символа. Однако я сомневаюсь, что ваш запрос когда-либо вернет результаты, потому что вы сравниваете значения верхнего регистра в репо со значениями нижнего регистра в своем запросе.

Добавлен запрос ниже без преобразования в верхний регистр и экранирования апострофа.

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''[email protected]') AND (child.[email] IS NOT NULL)
person rakhi4110    schedule 06.08.2020
comment
Я использую значения в верхнем регистре в качестве адреса электронной почты в своем запросе, но когда я редактировал его в этом посте, оно было ниже. Спасибо за это. Это сработало. - person PV_PN; 06.08.2020