我有以下内容:
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查询之前替换dash的方法吗?
答案 0 :(得分:1)
那么,
我在这里找到了这个解决方案:
if (paramsMap.phone) {
String phoneNumber = paramsMap.phone.replace("-", "")
sqlRestriction("replace(phone, '-', '') like '%$phoneNumber%'")
}
而不是
if (paramsMap.phone) {
ilike('phone', paramsMap.phone + "%")
}
这样我就可以随时获得结果。