为什么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";
解法一就失效了。
因为 * 放在后面就不能用了。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值