#mysql #sql #querydsl
#mysql #sql #querydsl
Вопрос:
Номер телефона в базе данных зашифрован, поэтому я должен использовать функцию дешифрования. Итак, я написал такой код, но он не сработал. Как я могу это сделать?
Вот мой код
BooleanBuilder builder = new BooleanBuilder();
if(StringUtils.hasText(memberVO.getSearchTypeCd()) amp;amp; StringUtils.hasText(memberVO.getSearchText())) {
if(memberVO.getSearchTypeCd().equals("memNm")) {
builder.and(info.memNm.contains(memberVO.getSearchText()));
}
if(memberVO.getSearchTypeCd().equals("nickNm")) {
builder.and(info.nickNm.contains(memberVO.getSearchText()));
}
if(memberVO.getSearchTypeCd().equals("hpNo")) {
//FN_DECRYPT is not working
builder.and(info.nickNm.prepend("FN_DECRYPT(").append(")").contains(memberVO.getSearchText()));
}
}
И я хочу ввести такой тип в sql.
WHERE FN_DECRYPT(hpNo) LIKE '0-0000-0000%'
Спасибо.
Ответ №1:
Наконец я решил это
BooleanBuilder builder = new BooleanBuilder();
if(StringUtils.hasText(memberVO.getSearchTypeCd()) amp;amp; StringUtils.hasText(memberVO.getSearchText())) {
if(memberVO.getSearchTypeCd().equals("memNm")) {
builder.and(info.memNm.contains(memberVO.getSearchText()));
}
if(memberVO.getSearchTypeCd().equals("nickNm")) {
builder.and(info.nickNm.contains(memberVO.getSearchText()));
}
if(memberVO.getSearchTypeCd().equals("hpNo")) {
builder.and(Expressions.booleanTemplate("FN_DECRYPT({0}) LIKE '%" memberVO.getSearchText().replaceAll("-", "") "%'", info.hpNo));
}
}