最近一个项目涉及到从SQLSERVER 2008往ORACLE 10G移植存储过程,就碰到了一个空串的问题。
我们知道,当对数据列定义char类型时,在输入的数据长度不足时,会自动补空格,但是在调用的时候则会自动将空格去掉,这样在访问数据选择过滤条件的时候就不需要严格的输入'字符 ‘这样的形式,而只需要输入'字符'。
对于char类型,在SQLSERVER和ORACLE上处理方式都一样,不需要用trim类似的函数来去空格。
对于varchar类型,则有区别了,在SQLSERVER里面,处理方式同char。
但是在ORACLE里面,则区别很大,在定义了一个varchar类型的列之后,输入'a'和'a '
在查询的时候用条件 where xxx='a',只能查询一条记录,'a '是查询不出来的,也就是说 varchar类型的数据在ORACLE里面取出来的时候不会自动去空格。
这个区别很重要,会导致从SQLSERVER移植过来的存储过程所获取的数据与原来不一致,特在这里记录一下。
我们知道,当对数据列定义char类型时,在输入的数据长度不足时,会自动补空格,但是在调用的时候则会自动将空格去掉,这样在访问数据选择过滤条件的时候就不需要严格的输入'字符 ‘这样的形式,而只需要输入'字符'。
对于char类型,在SQLSERVER和ORACLE上处理方式都一样,不需要用trim类似的函数来去空格。
对于varchar类型,则有区别了,在SQLSERVER里面,处理方式同char。
但是在ORACLE里面,则区别很大,在定义了一个varchar类型的列之后,输入'a'和'a '
在查询的时候用条件 where xxx='a',只能查询一条记录,'a '是查询不出来的,也就是说 varchar类型的数据在ORACLE里面取出来的时候不会自动去空格。
这个区别很重要,会导致从SQLSERVER移植过来的存储过程所获取的数据与原来不一致,特在这里记录一下。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22166274/viewspace-722695/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22166274/viewspace-722695/