/ / Какво става? <= на две varchars? [дубликат] - oracle, plsql, oracle-sqldeveloper

Какво става? <= на два varchars? [дубликат] - оракул, plsql, oracle-sqldeveloper

В моя Oracle db забелязах някакво странно поведениекогато правите <= сравнение на две числа. И намерих проблема. .Net кода преминава в една от стойностите като DbParameter тип string. Типът на колоната Oracle на другия номер беше varchar. Така че по същество това, което се случваше, беше две числа, които всъщност бяха вархари.

Може ли някой да обясни защо следното изявление е вярно в PLSQL?

"10000001" <= "50000"

Отговори:

1 за отговор № 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