您的当前位置:首页>全部文章>文章详情

thinkphp5中FIND_IN_SET()函数用法

发表于:2024-06-25 09:24:42浏览:270次TAG: #ThinkPHP

如果您想要在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时不会因为字符串中的空格而出现误差。