我正在使用 SQL 資料庫
我的資料庫有一個帶有“術語”的列和一個帶有“內容”的列
現在,當我獲得“術語”的用戶輸入時,我使用該術語查詢資料庫以獲取該術語的內容。
是否可以在“術語”列中有一個逗號分隔的術語串列,如果用戶的術語在術語串列中,那么它會回傳該術語的內容?
這是我的 SQL 資料庫作為 PHP 陣列:
$database = array(
0 => array("term" => "example", "content" => "example content"),
1 => array("term" => "example, examples, many examples", "content" => "example content"),
);
現在我只能回傳索引為 0 的行。如果用戶的術語與串列中的一項完全匹配,我希望能夠回傳第 1 行,在本例中為“示例”、“示例”或“很多例子”。
<?php
$sql_query = $connection->prepare("SELECT *
FROM database WHERE term LIKE :term
ORDER BY priority DESC
LIMIT 10");
$term = "example";
$sql_query->bindParam(":term", $term );
$sql_query->execute();
$result = $sql_query->fetchAll(); // Gets all results and turns them into an array
?>
我是否可以執行將用戶的“術語”與逗號分隔的“術語”串列進行比較的資料庫查詢?請記住,它們必須完全匹配。
uj5u.com熱心網友回復:
用這個
WHERE FIND_IN_SET(:term, term)
uj5u.com熱心網友回復:
使用正則運算式(regexp)進行單詞匹配,使用 BINARY 區分大小寫。
SELECT *
FROM database
WHERE term REGEXP BINARY '[[:<:]]:term[[:>:]]'
ORDER BY priority DESC
LIMIT 10
Regexp 與 php 中的 preg_match 有點相同,它按模式查找匹配。
[[:<:]], [[:>:]] 這些標記代表單詞邊界。它們分別匹配單詞的開頭和結尾。單詞是前面或后面沒有單詞字符的單詞字符序列。單詞字符是 alnum 類中的字母數字字符或下劃線 (_)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450604.html
上一篇:MySQL第一個資料庫創建
