Sql server 从文本数据类型的角度看ORACLE vs SQL Server

Sql server 从文本数据类型的角度看ORACLE vs SQL Server,sql-server,oracle,sqldatatypes,type-conversion,Sql Server,Oracle,Sqldatatypes,Type Conversion,这些天来,我面临着一个与Oracle和SQL Server之间的文本数据类型差异相关的问题。 更确切地说,我将Oracle中的字符串接与SQL Server中的varchar列进行比较 条件如下: rtrim(NUM1) || ' ' || rtrim(NUM2) <> D2.NUM rtrim(NUM1)| | | | rtrim(NUM2)D2.NUM 它是从甲骨文公司推出的 其中NUM1和NUM2是Oracle中的varchar2数据类型,而NUM是SQL Server中的

这些天来,我面临着一个与Oracle和SQL Server之间的文本数据类型差异相关的问题。 更确切地说,我将Oracle中的字符串接与SQL Server中的
varchar
列进行比较

条件如下:

rtrim(NUM1) || ' ' || rtrim(NUM2) <> D2.NUM
rtrim(NUM1)| | | | rtrim(NUM2)D2.NUM
它是从甲骨文公司推出的

其中NUM1和NUM2是Oracle中的
varchar2
数据类型,而NUM是SQL Server中的
varchar

我希望这个条件是假的,但不幸的是,它是真的

通常,这两个变量的值都相同='7 a',但它们不会被认为是相同的

我试图手工编写一个硬编码的比较,意味着<代码> '7' .num < /Cord>这是错误的,因为Oracle认为值是相同的,但是当我比较<代码> rTrim'(NUM1)''rrimm(NUM2)< /代码>和“7 A”时,Oracle认为它们是不同的。


有人知道为什么Oracle认为<代码> rTrm(NUM1)''''rrimm(NUM2)' 7 ' < /COD>是真的吗?< /P>我不太理解你的问题,但是它可以是<代码> D2吗?Num < /Cord>是空的?也许<代码> '7' 'd2.num < /c>是错误的,因为它是空的,而不是因为Oracle认为它们是相同的值2.num不是null。问题是:为什么Oracle认为“7 A”不同于“7 A”,其中第一’7 A’是从RtRIM(NUM1)''''rrimm(NUM2)(Oracle VARCHAR2值)中获得的,而第二’7 A’ID是从D2.NUM(MS-SQL VARCHAR值)中恢复过来的。在重读了第四次的问题之后,我仍然不明白你在问什么……如果
'7a'D2.NUM
为false,则D2.NUM为null(根据您的注释不是null)或为“7a”。如果
rtrim(NUM1)| | | | | rtrim(NUM2)'7a'
rtrim(NUM1)| | | | | rtrim(num)d2.num
相同,那么你为什么认为它是假的?对不起,我的解释不是很清楚。在甲骨文中,rtrim(NUM1)| |“| | rtrim(NUM2)结果为“7a”。在MS-SQL中,D2.NUm也是“7a”。比较这两个值会发现它们不同。我的问题是“为什么甲骨文认为它们是不同的?”因为它们看起来都有相同的价值。为什么你认为这是一个Oracle MS SQL的东西?您编写了
rtrim(NUM1)| | | | rtrim(NUM2)'7a'
。请尝试从中选择转储(rtrim(NUM1)| | | | | rtrim(NUM2))。并查看您真正拥有的内容