0

我的表中有一个名为 的列users。我需要从此表中检索行。

列中的值采用users以下格式:45br67br89br96. 表示表中的用户列由br(换行符)内爆

如果列中存在某个值,我需要检索表的行,例如我需要检索用户包含 89 的行。

我该如何为此编写查询?

4

3 回答 3

1

使用 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 . '%"';
?>

我还向您推荐这堂课:数据库规范化

于 2012-05-28T10:44:31.893 回答
0

只需查询单元格的整个值并应用 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

于 2012-05-28T09:55:11.017 回答
0

如果我理解你的问题,我会爆炸价值然后搜索用户。

像这样:

$arr = explode("br", $users_value);
$row = array_search('89', $arr);
于 2012-05-28T09:55:42.540 回答