2013-11-15 42 views
0

這是我的桌子。如何使用mysql查詢檢索記錄的確切字符串匹配?

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 

任何幫助將不勝感激?

謝謝。

回答

-3
SELECT name FROM t 
WHERE name LIKE '35,%' OR t LIKE '%,56' 
+0

我傳遞值,56' 。現在我怎麼可以在查詢中調用它? – user2995265

+1

爲什麼第一個子句使用'name'而第二個使用't'? – Krease

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>'; 
    }` 
+0

它會給你到底你在問什麼 – vamsisnikky

+0

我通過php變量$ test = '35,56'傳遞值。現在我怎麼可以在查詢中調用它? – user2995265

+0

這將運行在php – vamsisnikky

0

,, MySQL有該功能:find_in_set()

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

這將確切地測試35號的56,無論它們在名稱列中以什麼順序排列。如果名稱列中有兩個以上的數字,這也適用。如果您測試'56'並且名稱列包含156,則此查詢將不成立。

爲了安全起見,使用LIKE表達式將是很多工作。

0

通過PHP變量$測試= '35試試這個

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

demo

相關問題