MySQL在具有特殊字符的集合函数中查找集合不起作用
我有一个存储过程:MySQL在具有特殊字符的集合函数中查找集合不起作用,mysql,sql,mariadb,find-in-set,mariasql,Mysql,Sql,Mariadb,Find In Set,Mariasql,我有一个存储过程: CREATE PROCEDURE MyDB.`tag_quicktrend`( IN taglist TEXT ) BEGIN SELECT * FROM taginfo WHERE FIND_IN_SET(tagname,taglist); END; 当我呼叫SP时: 调用sp\u图表\u波段\u标签\u快速趋势('YH05_한글')返回正确的标记。 调用sp\u图表\u波段\u标签\u快速趋势('YH05_한글,~!@#$%^&*()(+
CREATE PROCEDURE MyDB.`tag_quicktrend`(
IN taglist TEXT
)
BEGIN
SELECT *
FROM taginfo
WHERE FIND_IN_SET(tagname,taglist);
END;
当我呼叫SP时:
调用sp\u图表\u波段\u标签\u快速趋势('YH05_한글')代码>返回正确的标记。
调用sp\u图表\u波段\u标签\u快速趋势('YH05_한글,~!@#$%^&*()(+)}{:?>最后我发现了问题,因为我设置了这个模式
SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',NO_BACKSLASH_ESCAPES');
此相等(=)查询返回空
select * from taginfo where tagname = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`'
它返回带有标记名=~!@$%^&*(\u+\ 124;}{)的行:“>我使用mysql,我也标记mssql来帮助它没有帮助-这是一种完全不同的技术请提供一个工作测试用例。为什么要禁用此设置?为什么不将所有的``替换为`\`?是的,我们可以使用\\而不是设置否`反斜杠`转义模式
select * from taginfo where tagname = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`'
select * from taginfo where tagname = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`'