有時候資料庫某個欄位的存取不只一項資料,可能會以某個自訂的標籤符號來組成多項資料,例如 1,2,3,或者是 a,b,c,那日後該如何取出我們想要的相符和的內容呢,譬如說我想抓出該欄位擁有 1 的內容,或者是擁有 a 的內容。
tbl_test 資料表結構
t_id int primary_key auto increment, t_name varchar(100), t_string text,
預先塞了三筆資料
a 1,2,3 b 12,3 c 2,3
include 'main.php'; $chan->dbConnect(); $string = 1; // 今天我們要搜尋出該欄位擁有 1 的資料 $string = '%,'.$string.',%'; // 首先把該搜尋字串使用 %, ,% 包圍 // 將被搜尋的欄位也使用 CONCAT 函式前後加上 , // toSql 是我自己的函式,會把 1 變成 '1' // $sql 最後會變成 SELECT * FROM tbl_test WHERE CONCAT(',', t_string, ',') LIKE '%,1,%' 這樣的結果 // 也就是用 LIKE 的特性對整體欄位做搜尋 $sql = sprintf("SELECT * FROM tbl_test WHERE CONCAT(',', t_string, ',') LIKE %s", $chan->toSql($string, 'text')); $row = $chan->myRow($sql); if ($row) { foreach ($row as $v) { echo $v['t_name'].'
'; } } // 最終的結果會找出 a
沒有留言:
張貼留言