由于公司最近将oracle项目移植到db2 中间出现了很多兼容性问题,这里主要记录下hibernate中模糊查询的兼容性问题
例子(hql):from table t where t.name like '%' || t.displayName || '%';
如果遇到这种情况,在oracle里面是完美兼容,到了db2就出问题了
解决方案:使用locate函数,上面这种情况可以修改成如下
from table t where locate(t.dispalyName,t.name)>0;//这里等于1就等同于上面sql语句的结果
from table t where locate(t.dispalyName,t.name)=1;,//1就是在name中从第一位开始匹配displayName
from table t where locate(t.dispalyName,t.name)=0;//等于0的结果是排除模糊匹配到的结果,也就是查出匹 配不到的所有数据;
from table t where locate(t.dispalyName,t.name)=2;//2就是在t.name中从第二位开始匹配dispalyName;
接下来=3,4,5,6相信大家都理解了.
locate(String param1,String param2,int param3) 从param2的第param3位置开始,返回param1第一次出现的位置,param3为负数的情况暂时还没去研究.
hibernate中使用locate会根据你配置的不同方言去解析对应的函数
注意:oracle中locate的参数是反的!!!!
在oracle中要达到上面例子的结果要这样写:from table t where locate(t.name,t.dispalyName)=1;
下面是官方实例(可以参考):
返回一个字符串在另一个字符串中的位置。
分享到:
相关推荐
LOCATE函数的基本语法为LOCATE(substr,str),其中substr是要搜索的子串,str是要搜索的字符串。该函数返回子串substr在字符串str中的第一次出现的位置,如果子串substr在str中不存在,返回值为0。 例如,下面是一个...
### C语言中的刷新和定位函数 #### 一、`fflush`函数 在C语言编程中,`fflush`函数是一种非常重要的工具,用于处理输出缓冲区中的数据。该函数的主要作用是强制将缓冲区中的数据写入到指定的目标设备(如磁盘),...
试设计一个实现下述要求的Locate运算的函数。设有一个带头结点的双向链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freg。所有结点的freg初始都为0...
4. 修改项目设置:进入项目的选项,找到"BL51 Locate"属性页,这是用于设置代码段定位的地方。在"Code"域中输入函数的链接名称和对应的重定位地址,格式如下: "?PR?_READIAP?DEMO(0x8000), ?PR?_PROGRAMIAP?DEMO...
5. LOCATE 函数:该函数返回源串在目标串出现的位置。例如:SELECT LOCATE(' FF C','FF FCCC',1) FROM CBB721; 6. POSITION 或 POSSTR 函数:该函数返回源串在目标串出现的位置。例如:SELECT POSITION('D' IN '...
10. INSTR函数:返回字符串substr在字符串str中第一次出现的位置,与locate函数类似,不过函数名不同。例如instr('foobarbar','bar')返回4。 11. LPAD和RPAD函数:LPAD用字符串padstr填充str左端直到字串长度为len...
LOCATE函数用于返回一个子字符串在一个字符串中首次出现的位置。POSITION函数是LOCATE的同义词。 ```sql SELECT LOCATE('bar', 'foobarbar'); -- 返回 4 ``` 12. INSTR函数 INSTR函数用于返回一个字符串在另一个...
Keil C51 中变量、常量、函数的定位是指在编译器中将变量、常量、函数定位到某个特定的存储器地址上,以满足特定的应用需求。下面是 Keil C51 中变量、常量、函数定位的相关知识点: 一、代码定位 Keil C51 中有两...
在本文中,我们将重点讨论四个常用的函数:locate()、instr()、position() 和 find_in_set(),并解析它们的使用方法。 1. **locate()** 函数: locate() 函数与 Java 的 `indexOf()` 方法类似,用于在一个字符串中...
在SQL查询中,`GROUP_CONCAT` 和 `LOCATE` 是两个非常实用的函数,它们分别用于处理分组数据的聚合和字符串定位。本篇文章将详细介绍这两个函数的用途以及它们如何联合使用,以帮助你更好地理解和应用在实际的数据库...
LOCATE 函数返回字符串 substr 在字符串 str 的第 pos 个位置起第一次出现的位置。如果 str 不包含 substr,则返回 0。 示例:mysql> select LOCATE('bar', 'foobarbar',5); -> 7 15. INSTR(str,substr) INSTR ...
1、mysql数据库转国产化瀚高数据库; 2、有些函数在瀚高数据库中不存在,需要添加自定义函数。
LOCATE(substr, str, pos)函数与LOCATE(substr, str)类似,但是从字符串str的第pos个字符开始搜索子字符串substr的位置。 **示例代码:** ```sql mysql> select LOCATE('bar', 'foobarbar', 5); -> 7 ``` ### 十四...
10. LOCATE() 函数与 INSTR() 函数 LOCATE()函数用于返回一个字符串在一个字符串中出现的位置(位置从1开始计数)。如果找不到子字符串,则返回0。第一个参数是子字符串,第二个参数是要搜索的主字符串,第三个参数...
LOCATE(substr, str) 函数返回子串 substr 在字符串 str 第一个出现的位置,如果 substr 不是 str 里面,返回 0。该函数是多字节可靠的。 四、字符串长度函数 LENGTH(str) 函数返回字符串 str 的长度。 OCTET_...
LOCATE 函数用于查找一个字符串在另一个字符串中的位置。其语法为:`LOCATE(EXPR1, EXPR2, [START_POS])`。此函数可以帮助确定一个子字符串是否存在于另一个字符串中,以及它出现的位置。 ### 11. REPEAT 函数 ...
LOCATE(substr,str) 函数返回子串 substr 在字符串 str 第一个出现的位置,如果 substr 不是在 str 里面,返回 0。 数字操作函数 CONV(N,from_base,to_base) 函数在不同的数字基之间变换数字。返回数字 N 的字符串...
* 字符串查找函数(locate) * 字符串格式化函数(printf) * 字符串转换成 map 函数(str_to_map) * base64 解码函数(unbase64) * 字符串转大写函数(upper,ucase) * 字符串转小写函数(lower,lcase) * 去空格函数(trim) *...