以grails标准转义下划线LIKE

时间:2012-09-19 14:19:55

标签: hibernate grails criteria

我们有一些简单的域对象,我们正在做的就像语句一样。表格中的数据通常都有下划线。问题是,在类似语句中使用下划线时,下划线是oracle中的通配符。到目前为止,这是我发现的关闭部分,但它似乎不能正常工作。

MyDomain{
def columnOne
def columnTwo
}

def results = myDomain.createCriteria().list(max:10, offset:10){
ilike("columnTwo","%BOB\_%")
sqlRestriction("ESCAPE \\")
}

正在执行的SQL是

select count(*) as y0_ from MY_SCHEMA.MY_DOMAIN this_ where
lower(this_.COLUMN_TWO) like ?
and ESCAPE '\'

似乎sqlRestriction子句在查询中被标记为AND。有没有办法避免这种情况,还是有更好的方法来格式化标准?

1 个答案:

答案 0 :(得分:2)

一种方法是使用like作为sqlRestriction并在字符串中添加转义符,如您所见here

def results = myDomain.createCriteria().list(max:10, offset:10){
  sqlRestriction("lower(column_two) like '%bob\_%' ESCAPE '\\' ")
}