1.mysql插入
1.1插入-反斜杠规则:
在MySQL中,反斜杠在字符串中是属于转义字符,经过语法解析器解析时会进行一次转义,所以当我们insert反斜杠(\)字符时,如 insert "\" 在数据库中最终只会存储"",第一个反斜杠(\)被当做转义字符处理。
-
当字符串中有
1个
反斜杠,插入后算0个
。 -
当字符串中有
2个
反斜杠,插入后算1个
。 -
当字符串中有
3个
反斜杠,插入后算1个
。 -
当字符串中有
4个
反斜杠,插入后算2个
。 -
当字符串中有
5个
反斜杠,插入后算2个。
1.2插入案例:
sql
INSERT INTO `t1`(`id`, `value`, `value_verify`) VALUES (2189, 11, '^[1-9]\\d*$');
这里的插入正则的效果才是^[1-9]\d*$
2.1查询规则
普通查询(=)规则和插入(INSERT语句)一样
like查询二次转义。除了会在语法解析时转义一次外,还会在正则匹配时进行第二次的转义。因此如果期望最终匹配到"",就要反转义两次,也就是由"\\\\"到"\\"再到"\"。
2.2查询案例
sql
mysql> SELECT id,value_verify from t1 where value_verify like '%\\\\%';
进行查询是like '%\%'
结果
+------+-----------------------+
| id | text |
+------+-----------------------+
| 2189 | ^[1-9]\d*$ |
| 2199 | ^[1-9]\d*$ |
+----+-----------------------+