0

条件付きステートメントで文字列が使用されている場合、mysql はどのように文字列をブール値にキャストしますか?

select if("192.168.0.0",true,false) // returns 1
select if("-1",true,false) // returns 1
select if("a1",true,false) // returns 0
4

1 に答える 1

2

MySQL は C スタイルのブール値を使用します。0は false で、その他の数値は true です。したがって、本当の質問は次のとおりです。

MySQL はどのように文字列を数値にキャストしますか?

その答えは、明らかな方法で文字列を変換することです。左から右に移動し、有効な数値がなくなったときに解析を停止します。例えば:

mysql> select '192.168.0.0' + 0, '-1' + 0, 'pancakes11' + 0;
+-------------------+----------+------------------+
| '192.168.0.0' + 0 | '-1' + 0 | 'pancakes11' + 0 |
+-------------------+----------+------------------+
|           192.168 |       -1 |                0 |
+-------------------+----------+------------------+

(10 進数) の一部にすることはできない'a1'ため、数値またはブール値のコンテキストではゼロです。'a'

式の評価における型変換およびconvertマニュアルのセクションが役立つ場合があります。


PS: 文字列に二重引用符を使用する習慣を身につけないでください。MySQL では使用できますが、多くのデータベースでは使用できません。一重引用符は、SQL で文字列リテラルを引用するために使用されます。

于 2013-10-05T05:44:33.090 に答える