Mysql 选择“-”的含义是什么
有一篇关于SQL注入的文章: 问题是,“选择-”的含义是什么?我使用MySQL进行了尝试,它返回:Mysql 选择“-”的含义是什么,mysql,sql,Mysql,Sql,有一篇关于SQL注入的文章: 问题是,“选择-”的含义是什么?我使用MySQL进行了尝试,它返回: mysql> select ''-''; +-------+ | ''-'' | +-------+ | 0 | +-------+ 1 row in set (0.00 sec) 发生了什么事?这是什么意思 以及选择“-”的结果: 我对这些结果感到非常困惑。是一个空字符串;-这是减法。所以你要从一个空字符串中减去另一个空字符串。减法是一个数字运算符,所以它的结果是一个数字,mys
mysql> select ''-'';
+-------+
| ''-'' |
+-------+
| 0 |
+-------+
1 row in set (0.00 sec)
发生了什么事?这是什么意思
以及选择“-”的结果:
我对这些结果感到非常困惑。是一个空字符串;-这是减法。所以你要从一个空字符串中减去另一个空字符串。减法是一个数字运算符,所以它的结果是一个数字,mysql在减法之前将其参数转换为数字。的数值为零-但这并不重要,因为从其自身减去的任何数字都将得到零。我将解释select-,它与select-,as select cast as int-cast as int,它是select 0-0
使用select“-”可以得到一个字符串。希望这有意义 从一个空字符串减到另一个空字符串:
见下文:
mysql> select '';
+--+
| |
+--+
| |
+--+
1 row in set (0.00 sec)
mysql> select '3'-'2';
+---------+
| '3'-'2' |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
但警告:如果不是数字字符串:
两个警告:
mysql> SHOW WARNINGS LIMIT 2
-> ;
+---------+------+---------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'a' |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'b' |
+---------+------+---------------------------------------+
2 rows in set (0.00 sec)
为什么没有空字符串的警告
其中,由于空字符串的内容为0,因此没有警告,请参见以下内容:
mysql> SELECT 0 = '';
+--------+
| 0 = '' |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
因此,通过做-你正在做0-0
更清楚地说,我添加了以下示例,我觉得这对您很有帮助:
转换如何发生:
mysql> SELECT '0' = 0
-> ;
+---------+
| '0' = 0 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
请注意其转换:
mysql> SELECT '' = '0'
-> ;
+----------+
| '' = '0' |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
已转换为0,“0”已转换为0但不等于“0”
mysql> SELECT '' - '';
+---------+
| '' - '' |
+---------+
| 0 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT '0' = 0
-> ;
+---------+
| '0' = 0 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT '' = '0'
-> ;
+----------+
| '' = '0' |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
mysql> SELECT '1' = 1
-> ;
+---------+
| '1' = 1 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT '' = 1
-> ;
+--------+
| '' = 1 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)