MySQL基本语法和SQL Server语法的差异小归纳(7)

MySQL实现的是扩展正则表达式。

mysql> SELECT 'basskd' REGEXP '^b','basskd' REGEXP 's.k','basskd' REGEXP NULL,NULL REGEXP '^b'; +----------------------+-----------------------+----------------------+------------------+ | 'basskd' REGEXP '^b' | 'basskd' REGEXP 's.k' | 'basskd' REGEXP NULL | NULL REGEXP '^b' | +----------------------+-----------------------+----------------------+------------------+ | 1 | 1 | NULL | NULL | +----------------------+-----------------------+----------------------+------------------+ 1 row in set 4.3 连接操作符

在MySQL中,"+"不算是一种连接操作符。但是它的表达式是另有意义的:它会将两边的表达式尝试转换为数值型进行数值相加运算,如果转换失败的则表示为0。

mysql> select '12'+'34',12+'34','abc'+12,'a'+'abc'; +-----------+---------+----------+-----------+ | '12'+'34' | 12+'34' | 'abc'+12 | 'a'+'abc' | +-----------+---------+----------+-----------+ | 46 | 46 | 12 | 0 | +-----------+---------+----------+-----------+ 1 row in set

要真正实现字符串连接,需要使用函数concat,这个将在下一篇文章的内置函数中介绍。

4.4 异或运算符XOR

异或运算符是用于比较两边值是否相同的。相同则返回0,不同则返回1,如果存在null,则直接返回null。

mysql> select 1 xor 1,0 xor 0,1 xor 0,1 xor null,null xor null; +---------+---------+---------+------------+---------------+ | 1 xor 1 | 0 xor 0 | 1 xor 0 | 1 xor null | null xor null | +---------+---------+---------+------------+---------------+ | 0 | 0 | 1 | NULL | NULL | +---------+---------+---------+------------+---------------+ 1 row in set

XOR运算符可以连接多次,顺序是从前向后依次进行运算。

mysql> select 1 xor 1 xor 0,1 xor 1 xor 1; +---------------+---------------+ | 1 xor 1 xor 0 | 1 xor 1 xor 1 | +---------------+---------------+ | 0 | 1 | +---------------+---------------+ 1 row in set 4.5 MySQL中的转义

在MySQL中某些符号需要使用反斜杠"\"来转义。包括单引号(')、双引号(")、反斜线(\)。

另外,如果对象名使用了关键字或特殊符号,也需要进行转义,如列名使用了int关键字,表名使用了char关键字等。但是此时的转义符号不是反斜线,而是反引号``或引号。

而在SQL Server中则不需要转义,有歧义的时候只需使用引号即可。

mysql> INSERT INTO test7 VALUES('\\'),('\\\\'),('\''); mysql> select * from test7; +-----+ | col | +-----+ | \ | | \\ | | ' | +-----+ 3 rows in set

对于对象名的转义,参考show create table table_name的结果即可看到,处处使用了反引号防止歧义。例如:

mysql> show create table test7; +-------+----------------------------------------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------------+ | test7 | CREATE TABLE `test7` ( `col` char(6) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------------------------------+ 1 row in set

本文永久更新链接地址

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/927ba476bd2b2a083daad0730bac5769.html