が実際に@scaisEdgeは右である、「 - +」MySQLの(対話型コマンドラインパラメータ)では、この使用量は通常、URLエンコード(「に符号化することができるクエリ部分のスペースのために使用されているコメントはありません+ 'または'%20 ')。
この場合、 '- +'は、&マイナス、1つの+オフセットの2種類の演算子です。したがって、このシーケンスは次のようになります。
select username, password from users where username = '' - '';
Original:
mysql> select username, password from users where username = '' --+ '';
+----------+------------+
| username | password |
+----------+------------+
| Dumb | Dumb |
| Angelina | I-kill-you |
| Dummy | [email protected] |
| secure | crappy |
...
Now:
mysql> select username, password from users where username = '' - '';
+----------+------------+
| username | password |
+----------+------------+
| Dumb | Dumb |
| Angelina | I-kill-you |
| Dummy | [email protected] |
| secure | crappy |
...
結果は同じです。
第2に、''と同じ整数0ここに。有効な整数なしのMySQL、任意のフィールドに は0
mysql> select '' = 0;
+--------+
| '' = 0 |
+--------+
| 1 |
+--------+
mysql> select '0s28' = 0;
+------------+
| '0s28' = 0 |
+------------+
| 1 |
+------------+
mysql> select '8s28' = 0;
+------------+
| '8s28' = 0 |
+------------+
| 0 |
+------------+
mysql> select '8s28' = 8;
+------------+
| '8s28' = 8 |
+------------+
| 1 |
+------------+
====Type Conversion====
mysql> select '12s' + 3;
+-----------+
| '12s' + 3 |
+-----------+
| 15 |
+-----------+
mysql> select 's52s6' + 3;
+-------------+
| 's52s6' + 3 |
+-------------+
| 3 |
+-------------+
mysql> select 's8' + 3;
+----------+
| 's8' + 3 |
+----------+
| 3 |
+----------+
にそう'を同一視します' - ' - 0まだは'は0を意味します。
列USERNAMEは
mysql> select 'Dumb' = 0;
+------------+
| 'Dumb' = 0 |
+------------+
| 1 |
+------------+
「ユーザ名= 0
」を有効数字(0ではない)で始まり、その0すべての名前等しいとconditonに一致する一つの名前を持っているわけではありませんがこの結論を確認するために、ユーザー名が '4love'のような整数で始まるレコードを挿入できます。新しいレコード以外のレコードがすべて表示されます。
同様の質問はここにある: mySQL returns all rows when field=0
「それは実際にいくつかの状況では動作しません。」これを明確にすることはできますか?これはうまくいきません。いつうまくいきませんか? – FrankerZ
@FrankerZはあなたが試してみると本当にはっきりしています。 - +すべての行を返します。(奇妙な動作のようですが) - +はコメントシーケンスではありません – scaisEdge
あなたの質問の可能な説明を投稿しました – scaisEdge