/ / Co się dzieje? <= na dwóch varcharach? [duplicate] - oracle, plsql, oracle-sqldeveloper

Co się dzieje? <= na dwóch varcharach? [duplicate] - oracle, plsql, oracle-sqldeveloper

W mojej bazie danych Oracle zauważyłem dziwne zachowaniepodczas wykonywania porównania <= na dwóch liczbach. I znalazłem problem. Kod .net przekazywał jedną z wartości jako DbParameter typu string. Natomiast kolumna Oracle o innym numerze była varcharem. Więc zasadniczo to, co się działo, to <= na dwóch liczbach, które faktycznie były varcharami.

Czy ktoś może wyjaśnić, dlaczego poniższe stwierdzenie jest prawdziwe w PLSQL?

"10000001" <= "50000"

Odpowiedzi:

1 dla odpowiedzi № 1

Becuase-

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