我们有一些像声明一样在做的简单域对象。表中的数据通常带有下划线。问题是,在like语句中使用下划线时,下划线是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。有没有办法避免这种情况,还是有更好的方式格式化标准?

请您参考如下方法:

一种方法是使用像sqlRestriction这样的方法,并在字符串中添加转义符,如您所见here。

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!