怎么了? < =两个varchars?

时间:2017-11-17 21:06:38

标签: oracle plsql oracle-sqldeveloper

在我的Oracle数据库中,我注意到对两个数字进行< =比较时出现了一些奇怪的行为。我发现了这个问题。 .net代码将其中一个值作为字符串类型的DbParameter传递。而另一个数字的Oracle列类型是varchar。所以基本上发生的事情是< =两个数字实际上是varchars。

有人可以解释为什么以下陈述在PLSQL中是正确的吗?

'10000001' <= '50000' 

1 个答案:

答案 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