我有以下内容:
myQuery { Map paramsMap, List<MyObject> objectList = null ->
and {
if (paramsMap.firstName) {
ilike('firstName', paramsMap.firstName + "%")
}
if (paramsMap.phone) {
ilike('phone', paramsMap.phone + "%")
}
}
}
一切正常。问题是电话可以存储为123-123-1234或9876543210。
当我们进入搜索屏幕时,如果用户查找1231231234,他将不会获得任何结果,因为该人用破折号保存了电话号码。同样,如果用户尝试查找电话为987-654-3210,他将找不到任何东西,因为用户保存时未用破折号表示。
无论如何有这样的搜索
ilike(phone.replace("-", ""), paramsMap.phone.phone.replace("-", "") + "%")
这样,它将正常工作。
有人知道在grails查询之前替换破折号的任何方法吗?
最佳答案
好,
我在这里找到此解决方案:
if (paramsMap.phone) {
String phoneNumber = paramsMap.phone.replace("-", "")
sqlRestriction("replace(phone, '-', '') like '%$phoneNumber%'")
}
而是
if (paramsMap.phone) {
ilike('phone', paramsMap.phone + "%")
}
这样,我一直都能得到结果。
关于grails - Grails-如何在查询前替换属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31010305/