0

这是我的桌子。

create table t (name varchar(100));

insert into t values ('35,12');
insert into t values ('35');
insert into t values ('35,56');
insert into t values ('46,56');
insert into t values ('23,12'); 

如果我搜索记录 35,56,它会返回完全匹配的记录,但我想检索 35 和 56 属于所有记录。我在 $test='35,56' 这样的 php 变量中传递值。

我要检索的输出是:

35,12
35
35,56
46,56

任何帮助将不胜感激?

谢谢。

4

4 回答 4

0

尝试这个

 SELECT name FROM t
 WHERE FIND_IN_SET('35',name) 
 or FIND_IN_SET('56',name)

演示

于 2013-11-15T09:03:03.110 回答
0

,,MySQL 有一个功能:find_in_set()

SELECT t.name FROM t
WHERE FIND_IN_SET('35',t.name) + FIND_IN_SET('56',t.name) > 0

这将完全测试 56 中的第 35 号,无论它们在名称列中的顺序如何。如果名称列中有两个以上的数字,这也有效。如果您测试“56”并且名称列包含 156,则此查询将不正确。

要使LIKE表达式变得安全,需要做很多工作。

于 2013-11-15T08:16:42.740 回答
0

select name FROM t WHERE name LIKE '35%' OR name LIKE '%,56%';

+-------+

| 姓名 |

+-------+

| 35,12 |

| 35 |

| 35,56 |

| 46,56 |

+-------+

`$test = "35,56";
    $keys = explode(',', $test);
    $query = "select name FROM t WHERE name LIKE '".$keys[0]."%' OR name LIKE '%,".$keys[1]."%'";
    $result = mysql_query($query) or die(mysql_error());
     $cnt = mysql_num_rows($result);
    while ($array = mysql_fetch_array($result)) {
       echo $array['name'].'<br>';
    }`
于 2013-11-15T07:35:50.000 回答
-3
SELECT name FROM t
WHERE name LIKE '35,%' OR t LIKE '%,56' 
于 2013-11-15T07:32:30.987 回答