English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

子句LIKE MySQL

Sappiamo che in MySQL possiamo utilizzare il comando SELECT SQL per leggere i dati. Possiamo anche utilizzare la clausola WHERE nell'istruzione SELECT per ottenere i record specifici.

La clausola WHERE può utilizzare l'uguale = per stabilire le condizioni di ricerca, come "w3codebox_author = 'oldtoolbag.com'".

A volte, possiamo voler ottenere tutti i record con il campo w3codebox_author che contiene il carattere "COM", in questo caso dobbiamo utilizzare la clausola LIKE dell'SQL nella clausola WHERE.

Nella clausola LIKE dell'SQL, il carattere di percentuale % rappresenta qualsiasi carattere, simile a una stella * nei caratteri jolly di UNIX o negli espressioni regolari.

Se non viene utilizzato il carattere di percentuale %, la clausola LIKE ha lo stesso effetto dell'uguale =.

Sintassi

Di seguito è riportata la sintassi comune dell'istruzione SQL SELECT che utilizza la clausola LIKE per leggere dati da un tabella.

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] field2 = 'somevalue'
  • Puoi specificare qualsiasi condizione nella clausola WHERE.

  • Puoi usare la clausola LIKE nella clausola WHERE.

  • Puoi usare la clausola LIKE al posto dell'uguale =.

  • LIKE viene solitamente usato con %, simile a una ricerca con caratteri jolly.

  • Puoi specificare una o più condizioni utilizzando AND o OR.

  • Puoi usare la clausola WHERE...LIKE nei comandi DELETE o UPDATE per specificare le condizioni.

Puoi usare la clausola LIKE nel prompt dei comandi

Di seguito vediamo come utilizzare la clausola WHERE...LIKE nel comando SQL SELECT per leggere dati da un tabella MySQL chiamata w3codebox_tbl.

Esempio online

Di seguito sono riportati tutti i record con il campo w3codebox_author nella tabella w3codebox_tbl che termina con COM:

mysql> use w3codebox;
Database changed
mysql> SELECT * from w3codebox_tbl WHERE w3codebox_author LIKE '%COM';
+-----------+---------------+---------------+-----------------+
| w3codebox_id | w3codebox_title  | w3codebox_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 3         | Impara Java   | oldtoolbag.com    | 2015-05-01      |
| 4         | Impara Python | oldtoolbag.com             | 2016-03-06             |
+-----------+---------------+---------------+-----------------+
2 righe nel set (0.01 sec)

Uso della clausola LIKE in uno script PHP

Puoi utilizzare la funzione mysqli_query() e lo stesso comando SQL SELECT con WHERE...LIKE per ottenere i dati.

Questa funzione esegue l'ordine SQL e poi utilizza la funzione PHP mysqli_fetch_array() per visualizzare tutti i dati della query.

Ma se si utilizza WHERE...LIKE nel SQL per DELETE o UPDATE, non è necessario utilizzare la funzione mysqli_fetch_array().

Esempio online

Di seguito troviamo tutti i record con w3codebox_author che termina con COM nella tabella w3codebox_tbl utilizzando lo script PHP:

<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn, "set names utf8");
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl
        WHERE w3codebox_author LIKE "%%COM"';
 
mysqli_select_db($conn, 'w3codebox');
$retval = mysqli_query($conn, $sql);
if(! $retval)
{
    die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>基础教程网 mysqli_fetch_array 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
    echo "<tr><td> {$row['w3codebox_id']}</td> "
         "<td>{$row['w3codebox_title']} </td> "
         "<td>{$row['w3codebox_author']} </td> "
         "<td>{$row['submission_date']} </td> "
         "</tr>"
}
echo '</table>';
mysqli_close($conn);
?>

结果输出如图所示: