在我的Oracle数据库中,我注意到对两个数字进行< =比较时出现了一些奇怪的行为。我发现了这个问题。 .net代码将其中一个值作为字符串类型的DbParameter传递。而另一个数字的Oracle列类型是varchar。所以基本上发生的事情是< =两个数字实际上是varchars。
有人可以解释为什么以下陈述在PLSQL中是正确的吗?
'10000001' <= '50000'
答案 0 :(得分:1)
监守 -
SQL> select ascii('10000001') from dual;
ASCII('10000001')
-----------------
49
SQL> select ascii('50000') from dual;
ASCII('50000')
--------------
53
SQL> select 'true' from dual where ascii('10000001') < ascii('50000');
'TRU
----
true