MySQL 中 关于 find_in_set 用法
在项目中用的是 EF、MySQL,在查询中用到某一个字段的值在某几个中。一开始想到的是 in。
但是,这个字段是 int 类型的,传入的参数需要用“,”分隔。这样传入的就是字符型的。
这样的结果是:本来是 in (1,2,3),这样传参变成 in (‘1,2,3’)和预期的不一样。
为了防止SQL语句的注入,没有使用拼接语句。找了半天发现 find_in_set 这个函数可以达到效果。
来举结果例子:
select * from table_name t where find_in_set(t.field1,'1,2,3,4');
select * from `test` t where find_in_set('daodao',t.field1);
这两个都可以。第一个参数是要查询的目标,第二个参数是查询的源。
有一点,find_in_set 相对于 in 效率上面要差。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步