Grails的版本:3.0.7的Grails和Hibernate個createCriteria igorning中介空白像條
Groovy的版本:2.4.4
JVM版本:1.8.0_51
我有以下查詢中Grails服務和我的問題是如何在字段值(如郵編)中間忽略空白。
作爲一個例子,期望的結果是'LL551RB'將在數據庫中保存的'LL55 1RB'的類似條款中匹配。相反,解決方案很簡單,可以從查詢值中刪除空白,但我無法確定如何從數據庫值中刪除它。
我試過下面哪些變體,雖然它們執行時不正確。
def allRecordsMatched = Event.createCriteria().listDistinct {
or {
eventCategories {
like("categoryName", "%" + search + "%")
}
like("eventName", "%" + search + "%")
like("address.town", "%" + search + "%")
like("address.county", "%" + search + "%")
like("address.postalCode".replaceAll("\\s",""), "%" + search + "%")
}
order("startDateTime", "asc")
}
return [results, allRecordsMatched]
可以在HQL和使用TRIM(FIELD)函數在它改寫它(不要確定它在HQL工作,但在SQL它的工作 – Koloritnij
您應該保存之前剝去不需要的空格。你的郵政編碼或通過後臺工作,所有其他方法會導致查詢更加複雜,並導致更差的搜索性能 – injecteer
@injecteer好點,我已經刪除了DB中現有條目中的空白並實現了一個setter在域類中刪除任何空格以及將字母轉換爲大寫 –