thinkphp5中FIND_IN_SET()函数用法
发表于:2024-06-25 09:24:42浏览:270次
如果您想要在MySQL中使用逗号分隔的字符串进行查询,您可以使用FIND_IN_SET
函数。这个函数用于查找字符串在逗号分隔的字符串列表中的位置,非常适合用来处理这种类型的查询。
例如,如果您有一个表products
,它有一个字段tags
,其中包含用逗号分隔的标签列表,并且您想要查询包含特定标签的产品,您可以这样写SQL查询:
SELECT * FROM products WHERE FIND_IN_SET('your_tag', tags) > 0;
这里的’your_tag’是您想要查询的具体标签。
请注意,FIND_IN_SET
函数在逗号分隔的字符串上执行,因此它假定字符串不包含任何空格。如果字符串可能包含空格,您可能需要先去除这些空格,这可以通过TRIM函数来完成。
例如:
SELECT * FROM products WHERE FIND_IN_SET('your_tag', TRIM(tags)) > 0;
在thinkphp5中,可以这样使用where
// 链式中
->where("FIND_IN_SET(:id,goods_ids)",['id'=>$goods_id])
// 数组中,请注意,$tagid若是数字
$tagid = 123;
where[] = ['exp',Db::raw("FIND_IN_SET($tagid,your_tag)")];
// 数组中,请注意,$tagid若是字符串
$tagid = '123';
where[] = ['exp',Db::raw("FIND_IN_SET('$tagid',your_tag)")];
这将确保在查找your_tag
时不会因为字符串中的空格而出现误差。
栏目分类全部>