我的表中有一个名为 的列users
。我需要从此表中检索行。
列中的值采用users
以下格式:45br67br89br96
. 表示表中的用户列由br
(换行符)内爆
如果列中存在某个值,我需要检索表的行,例如我需要检索用户包含 89 的行。
我该如何为此编写查询?
使用 MySQLLIKE
运算符。它执行给定表达式(例如列中字段的值)与给定模式的简单比较。在您的情况下,模式是用户 ID(例如89
),表达式是列名(users
):
SELECT * FROM `my_table` WHERE `users` LIKE "%89%"
%
角色非常有用。它匹配任意数量的字符,甚至是零个字符。(另一个是_
- 它完全匹配一个字符。)
上面当然是一个例子。对于 PHP 脚本中的正常使用,您必须将模式作为变量传递:
<?php
$i_search_for = 89;
$query = 'SELECT * FROM `my_table` WHERE `users` LIKE "%' . $i_search_for . '%"';
?>
我还向您推荐这堂课:数据库规范化。
只需查询单元格的整个值并应用 preg_match_all 即可提取所有用户 ID。
$str ="45br67br89br96";
preg_match_all('#([0-9])+#', $str, $array, PREG_PATTERN_ORDER);
$matches = $array[0];
foreach($matches as $var)
{
print($var." ");
}
产出:45 67 89 96
如果我理解你的问题,我会爆炸价值然后搜索用户。
像这样:
$arr = explode("br", $users_value);
$row = array_search('89', $arr);