为什么select * || flag from flag 不行呢?
首先*(星号)
在SQL语句中有特殊的意义。应该是保留字或关键字 (没找到*(星号)
属于什么) 。
所以你直接使用 select * || flag from flag 会报语法错误。
实验一:
这是一张表
查询语句 SELECT *||mpassword FROM rjqm.manager; 结果:
和查询语句 SELECT .||mpassword FROM rjqm.manager; 结果是一样的:
都是报语法错误。
实验二
如果用 ``(反引号) 将 *(星号)引起来就不会报语法错误。而是报没有找到 * 这一列。
``(反引号) 是为了区分MYSQL的保留字与普通字符而引入的符号。
而且,||是逻辑运算符。
|| 具体语法规则为:
当两个操作数都为非 NULL 值时,如果有任意一个操作数为非零值,则返回值为 1,否则结果为 0;
当有一个操作数为NULL 时,如果另一个操作数为非零值,则返回值为 1,否则结果为NULL;
假如两个操作数均为 NULL 时,则返回值为 NULL。
这也是为什么你在输入框中输入任何数字都会返回1,因为他进行了运算。
而你在输入框中输入任何非数字,都不会有反应。因为报错了。
另:
如果这道题后台查询语句改为
sql=“select flag||”.post[‘query’]." from Flag";
解法一就失效了。
因为 * 放在后面就不能用了。