/ / Che succede? <= su due varchars? [duplicato] - oracle, plsql, oracle-sqldeveloper

Che succede? <= su due varchars? [duplicato] - oracle, plsql, oracle-sqldeveloper

Nel mio db Oracle, ho notato un comportamento stranoquando si fa un confronto <= su due numeri. E ho trovato il problema. Il codice .net stava passando in uno dei valori come DbParameter di tipo string. E il tipo di colonna Oracle dell'altro numero era un varchar. Quindi essenzialmente quello che stava accadendo era un <= su due numeri che erano in realtà varchars.

Qualcuno può spiegare perché la seguente affermazione è vera in PLSQL?

"10000001" <= "50000"

risposte:

1 per risposta № 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