有時候資料庫某個欄位的存取不只一項資料,可能會以某個自訂的標籤符號來組成多項資料,例如 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