今天做规则校验的时候
碰到了这个问题这是DB2和ORACLE的translate的不同之处;
下面是ORACLE的运行结果
1 select TRIM(TRANSLATE(‘1234’,’123456789’,’ ‘) )from dual ;
2 select TRANSLATE(‘12334’,’123456789’,’ ‘) from dual;
1的结果是null ORACLE不支持空字符串 所有空字符串经过处理后都是null
2的结果为一个空格 原因很简单只替换了第一个1位空格 超出的部分23456789默认改为空。
下面是DB2的运行结果
1 select TRIM(TRANSLATE(‘1234’,’ ‘,’123456789’) )from SYSIBM.SYSDUMMY1 ;
2 select TRANSLATE(‘1234’,’ ‘,’123456789’) from SYSIBM.SYSDUMMY1 ;
db2的translate方式两个参数正好反过来的!!!
1的结果是空 是空字符串 不是null! DB2支持空字符串”
2的结果是四个空格 他的translate方法与oracle不同 所有对应的1234都转换为空格!!!
TRIM函数作用是一样的 都是去除了字符串前后所有的空格!!
是所有两边的空格!!
附加一条刚刚发现的!!
***DB2中”=’ ‘=’ ‘多少个空格都一样
ORACLE中”!=’ ’
’ ‘=’ ‘多少个空格都一样
不信可以测 select * from 表 where ’ ‘=”* !!!!
本文探讨了DB2和Oracle数据库中Translate函数的行为差异。在Oracle中, Translate函数使用空字符串作为替换字符时返回NULL或空格, 而在DB2中则返回空字符串或多个空格。此外, 文章还介绍了Trim函数在两种数据库中的相似用法。
590

被折叠的 条评论
为什么被折叠?



