示例:
-- 排序规则 utf8mb4_bin 属性为 PAD SPACE。
mysql> SET NAMES utf8mb4 COLLATE utf8mb4_bin;
Query OK, 0 rows affected (0.00 sec)
mysql> set @a='mysql ';
Query OK, 0 rows affected (0.00 sec)
mysql> set @b='mysql';
Query OK, 0 rows affected (0.00 sec)
-- 验证变量 @a 和变量 @b 是否相同,结果为相同,也就是尾部的空格不参与比较。
mysql> select if(@a=@b,' @a 和 @b 相同','@a 和 @b 不同') as '比较结果';
+-------------------+
| 比较结果 |
+-------------------+
| @a 和 @b 相同 |
+-------------------+
1 row in set (0.00 sec)
-- 把排序规则变为 utf8mb4_0900_bin,这个属性为 NO PAD。
mysql> SET NAMES utf8mb4 COLLATE utf8mb4_0900_bin;
Query OK, 0 rows affected (0.00 sec)
-- 同样验证上面的结果,结果跟描述相悖。原因在于,@a 和 @b 还保持着之前的排序规则,
mysql> select if(@a=@b,' @a 和 @b 相同','@a 和 @b 不同') as '比较结果';
+-------------------+
| 比较结果 |
+-------------------+
| @a 和 @b 相同 |
+-------------------+
1 row in set (0.00 sec)
-- 重新给@a和@b赋值
mysql> set @a='mysql ';
Query OK, 0 rows affected (0.00 sec)
mysql> set @b='mysql';
Query OK, 0 rows affected (0.00 sec)
-- 再次验证结果,和之前描述一致。
mysql> select if(@a=@b,' @a 和 @b 相同','@a 和 @b 不同') as '比较结果';
+------------------+
| 比较结果 |
+------------------+
| @a 和 @b 不同 |
+------------------+
1 row in set (0.00 sec)