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 效率上面要差。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM