目录

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的注释

  1. #注释内容单行注释
  2. -- 注释内容(注意:--后面有一个空格)
  3. /*注释内容*/

/*......*/在大部分编程语言中都是注释,这个注释是不被执行的,但是在MySQL中为了保持兼容性,MySQL会把一些仅仅在MySQL中执行的特殊语句放在/*!......*/,这样的数据在其他数据库中是不被执行的,但是在MySQL中是被执行的,这里*!之间不能有空格。

例如:/*!50701 select * from test*/,这里的50701表示假设数据库版本5.7.01以上才会执行这条语句。

/*!select * from users*/; # 注意Mysql中的/*!*/的*/不能写在;的后面