这是我的桌子。
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落在所有记录上。我在PHP变量中传递值,如$ test = '35,56'。
我想检索输出是:
35,12
35
35,56
46,56
任何帮助将不胜感激?
感谢。
答案 0 :(得分: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>';
}`
答案 1 :(得分: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
表达式来保证安全是很有效的。
答案 2 :(得分:0)
答案 3 :(得分:-3)
SELECT name FROM t
WHERE name LIKE '35,%' OR t LIKE '%,56'