mysql - MySQL服务器版本10.3.9-MariaDB不能查询文本有单引号
问题描述
我有一个 MySQL 数据库,它的归档 TagName 值为 ~!@#$%^&*()_+|}{":?><./';[]\=-` 我尝试查询 select TagName from taginfo where TagName like '%@#$%';
它显示带有标记名的数据包含引号字符。但我用 = 运算符和 like 运算符查询并添加更多引号 '' 以接受单引号,但它显示空结果。
我也尝试添加 COLLATE UTF8_GENERAL_CI 或更改 CHARACTER SET 但都没有成功。
SELECT * from taginfo where tagname like '%~!@#$%^&*()_+|}{":?><./'';[]\=-`%';
SELECT * from taginfo where tagname like '%~!@#$%^&*()_+|}{":?><./'';[]\=-`%' COLLATE UTF8_GENERAL_CI;
SELECT * from taginfo where tagname COLLATE UTF8_GENERAL_CI like '%~!@#$%^&*()_+|}{":?><./'';[]\=-`%';
ALTER TABLE mytable CONVERT TO CHARACTER SET UTF8_GENERAL_CI
Error 2/19/2019 10:03:24 AM 0:00:00.039 <link> - MySQL Database Error: Unknown character set: 'UTF8_GENERAL_CI' 5 0
数据库服务器版本:MySQL 5.5.5 MariaDB 表信息:
更新:我发现一个问题,如果我查询没有字符 \ 它显示结果:
select TagName from taginfo where TagName like '%~!@#$%^&*()_+|}{":?><./'';[]%';
但是我在最后添加了一个字符 \ 它没有显示任何内容:
select TagName from taginfo where TagName like '%~!@#$%^&*()_+|}{":?><./'';[]\%';
添加更多的飞溅仍然不起作用
select TagName from taginfo where TagName like '%~!@#$%^&*()_+|}{":?><./'';[]\\%';
更新:现在的问题,like 查询返回结果但 = 查询不返回任何结果。
SELECT * from taginfo where tagname like '%~!@#$%^&*()_+|}{":?><./'';[]\\=-`%';
select * from taginfo where TagName = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`'
更新:当我尝试在 MySQL 8.0.13 中创建数据库时,此查询运行良好并返回 1 行
select * from taginfo1 where TagName = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`';
但在 10.3.9-MariaDB 中,查询
select * from taginfo1 where TagName = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`';
不能返回任何结果。
SELECT VERSION();
10.3.9-MariaDB
解决方案
最后我发现了问题,因为我设置了这个模式。
SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',NO_BACKSLASH_ESCAPES');
这个查询返回空
select * from taginfo where tagname = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`'
当我删除 NO_BACKSLASH_ESCAPES 时SET @@SQL_MODE = 'NO_ENGINE_SUBSTITUTION';
select * from taginfo where tagname = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`'
它返回标记名 = ~!@#$%^&*()_+|}{":?><./';[]\=-` 的行
推荐阅读
- javascript - Jquery datatables HTML actionlink,如何使用foreach添加编辑按钮
- javascript - 在使用 Jquery 加载新内容之前淡入 div
- r - R问题:在另一个具有降雨的数据框中从向量中查找日期值,将某些日期的总降雨量添加到总数中
- go - 如何显示 ssh 服务器的可用身份验证方法
- javascript - “img”标签中的图片无法加载
- python - Flask:使用flask-sqlalchermy分页结果错误
- javascript - html/css 中的动画
- laravel - laravel 8 外键
- c - LUA IPv6 转长
- sql - 从不同的表中选择多行到一列