MySQL特殊符号
目录
MySQL特殊符号
逻辑符号
!符号,是取反的符号,true是1,false是0
select 123; # 结果是123
select !123; # 结果是0
# 非0即真
定义变量
@与@@
@是用户变量,@@是系统变量。
select @a;
# 声明用户变量名,如果你不加的话,会认为这是一个列名,但是这列不存在,就报错了;
@变量名 : 定义一个用户变量。= 对该用户变量进行赋值。
用户变量赋值有两种方式: 一种是直接用=号,另一种是用:=号。
其区别在于:
使用set命令对用户变量进行赋值时,两种方式都可以使用;
用select语句时,只能用:=方式,因为select语句中,=被看作是比较操作符。
set @mystr = "mystring";
select @mystr; # mystring
select !@mystr; # 1
select (@mystr+0); # 将其转换为数字后为0
select !(@mystr+0); # 1
由此可见将一个字符串转换为整数后为0,在!就是1。
字符串与数字的相互转换
方法1
直接+0
select '123'+0
方法2
使用函数convert
语法:convert(value,type)
type可以为:
decimal 浮点数
signed 整数
unsigned 无符号整数
select convert('123',signed);
方法3
语法:cast(value,as type)
type可以为:
decimal 浮点数
signed 整数
unsigned 无符号整数
select cast('123',as signed);
按位取反运算符
~:运算法则:0变1,1变0
就是按位取反:
select ~1;
# 18446744073709551614
# 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111110
因为是64位系统,所以说是这么大的数字。
但是对于字符串来说,如果说你按位取反的话,那么就是固定值,具体为什么是这样,我也不知道。
这是mysql中对字符串按位取反的结果
# 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
# 18446744073709551615 这是对应的10进制
MySQL的注释
#注释内容单行注释-- 注释内容(注意:--后面有一个空格)/*注释内容*/
/*......*/在大部分编程语言中都是注释,这个注释是不被执行的,但是在MySQL中为了保持兼容性,MySQL会把一些仅仅在MySQL中执行的特殊语句放在/*!......*/,这样的数据在其他数据库中是不被执行的,但是在MySQL中是被执行的,这里*和!之间不能有空格。
例如:/*!50701 select * from test*/,这里的50701表示假设数据库版本5.7.01以上才会执行这条语句。
/*!select * from users*/; # 注意Mysql中的/*!*/的*/不能写在;的后面