MySQL中mid((user)from(-1))含义及对应SQL查询语句释义咨询
MySQL查询语句解析
你提供的查询语句如下:
select user from mysql.user where user=''!=(mid((user)from(-1))='t')
核心语法mid((user)from(-1))说明
- MySQL的
mid()函数用于截取字符串子串,支持两种语法格式:- 常用写法:
mid(目标字符串, 起始位置, [截取长度]),省略长度默认截取到字符串末尾 - 标准SQL写法:
mid(目标字符串 from 起始位置 [for 截取长度]),和上面的写法逻辑完全一致,你遇到的就是这种格式
- 常用写法:
- 这里的
from(-1)是指定起始位置为字符串的倒数第一个字符:
当给mid()传入负数作为起始位置时,MySQL会从字符串的末尾反向计算位置:-1对应倒数第1位,-2对应倒数第2位,以此类推。
所以mid(user from -1)的实际作用就是取出user字段值的最后1个字符。
整条语句逻辑说明
where条件里的!=作用于两个布尔判断结果,等价于逻辑异或(XOR),满足以下任意一种情况时条件成立:
user=''为真(用户名为空),且mid(user from -1)='t'为假(空用户名不存在最后一位,该判断天然为假)user=''为假(用户名非空),且mid(user from -1)='t'为真(用户名最后一个字符是小写t)
整条语句的最终作用是:查询mysql.user系统表中,所有用户名为空、或者用户名最后一位是小写t的账号的用户名。
内容的提问来源于stack exchange,提问作者capstonene
相关产品推荐
相关产品推荐

