经评论区朋友的指点,此篇文章存在问题,不把SQL关键字作为字段名才是解决问题的关键.
单独针对mysql,可以使用反引号,即+
对于oracle,需要使用双引号加大写,即"KEY"这种,或者直接不加任何符号,不能使用单引号,不然会出现评论区兄弟说的那种情况,即查询结果的字段是返回'key'这种形式.
sql使用单引号
查询见截图,下面返回的查询结果中返回的字段名带有单引号:
查询结果中应该不带单引号的.
所以为了兼顾mysql和oralce,最好的办法是修改字段名,不要涉及sql系统关键字和特殊字段.
在mybatis的xml配置中有如下sql语句:
上述配置,在mysql中会报错
提示有语法错误, key value为msyql系统关键字,解决方法可以是可以用反引号,如下
这样做在mysql中是可以的,不过在oracle中使用反引号会报错
上述mybatis配置中的sql在oracle中执行是没问题的,
所以为了sql在mysql和oracle中都能执行,使用单引号更改sql语句,改完如下:
这样在mysql和oracle中都可以执行了.
你的肯定不是直接在MYSQL执行的查询,你用别的程序调用MYSQL查询的时候,别的程序也需要转义一次.
select '|' regexp '\\|'
select '|' rlike '\\|' 也是一样的 O(∩_∩)O~
MySql字符转义
在字符串中,某些序列具有特殊含义.这些序列均用反斜线('\')开始,即所谓的转义字符.MySQL识别下面的转义序列:
\0 ASCII 0(NUL)字符.
\' 单引号(''').
\" 双引号('"').
\b 退格符.
\n 换行符.
\r 回车符.
\t tab字符.
\\ 反斜线('\')字符.
\%'%'字符.参见表后面的注解.
\_'_'字符.参见表后面的注解.
分号不用转义,和普通字符一样.
需要判断一个字符需不需要转义,可以用下面的SQL测试.把;换成相应的字符即可.
select
';'
from
dual
\0
一个 ASCII 0 (NUL) 字符.
\'
\"
\b
\n
一个 ASCII 10 换行符.
\r
\t
\z
\\
\%
\_
注意如果在某些正文环境内使用 "\%" 或 "\_",将返回字符串 "\%" 和 "\_" 而不是 "%" 和 "_".
字符串中包含引号的可以有下列几种写法:
一个字符串用单引号"'"来引用的,该字符串中的单引号"'"字符可以用"''"方式转义.
一个字符串用双引号"""来引用的,该字符串中的"""字符可以用""""方式转义.
一个字符串用双引号"""来引用的,该字符串中的单引号"'"不需要特殊对待而且不必被重复或转义.同理,一个字符串用单引号"'"来引用的,该字符串中的双引号"""不需要特殊对待而且不必被重复或转义.
以上就是土嘎嘎小编为大家整理的mysql的怎么转义相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!