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 № 1Becuase-
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