程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL中LIKE子句相干應用的進修教程

MySQL中LIKE子句相干應用的進修教程

編輯:MySQL綜合教程

MySQL中LIKE子句相干應用的進修教程。本站提示廣大學習愛好者:(MySQL中LIKE子句相干應用的進修教程)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL中LIKE子句相干應用的進修教程正文


MySQL LIKE 語法
LIKE 運算符用於 WHERE 表達式中,以搜刮婚配字段中的指定內容,語法以下:

WHERE column LIKE pattern
WHERE column NOT LIKE pattern

在 LIKE 後面加上 NOT 運算符時,表現與 LIKE 相反的意思,即選擇 column 不包括 pattern 的數據記載。
LIKE 平日與通配符 % 一路應用,% 表現通配 pattern 中未湧現的內容。而不加通配符 % 的 LIKE 語法,表現准確婚配,其現實後果同等於 = 等於運算符。
LIKE 應用實例
上面是一個應用 LIKE 查詢數據的例子:
user 用戶表原始數據:

https://www.aspphp.online/shujuku/UploadFiles_3118/201707/2017072814224113.png (642×129)

SELECT * FROM user WHERE username LIKE '小%'

前往查詢成果以下:

https://www.aspphp.online/shujuku/UploadFiles_3118/201707/2017072814224214.png (641×82)

該例子是找出一切 username 以“小” 開首的記載,小% 表現以“小”字符開首,爾後面可所以隨意率性字符。異樣, %小 表現以“小”開頭,而 %小%則表現包括“小”這個字符(並一同包含 '%小' 與 '小%' 這兩種情形)。
上面這個例子,將查詢出一切 username 中字段隨意率性地位包括 a 字符的記載:

SELECT * FROM user WHERE username LIKE '%a%'

MySQL LIKE 年夜小寫
MySQL LIKE 婚配字符時,默許是不辨別年夜小寫的,假如須要在婚配的時刻辨別年夜小寫,可以參加 BINARY 操作符:

SELECT * FROM user WHERE username LIKE BINARY '%azz%'
SELECT * FROM user WHERE username LIKE BINARY '%aZZ%'

BINARY 操作符表現依照二進制停止比擬,是以加上該操作符後,即可以嚴厲辨別年夜小寫,是以以上兩條 SQL 查詢出來的內容是分歧的。
MySQL LIKE 中文字符婚配
因為數據存儲編碼成績,在某些情形下,MySQL 停止 LIKE 搜刮前往的數據中除相符請求的數據外,常常還會前往很多不相關的數據。這時候候也須要在 LIKE 前面加上 BINARY 操作符以停止二進制比擬:

SELECT * FROM user WHERE username LIKE BINARY '%小%'

提醒
當在 LIKE 婚配時加上 BINARY 操作符後,則會嚴厲辨別英文年夜小寫。是以當檢索的內容是中英文混雜且須要疏忽英文年夜小寫的時刻,就會碰到費事。為處理此成績,須要引入 MySQL 中的 UPPER() 與 CONCAT() 函數:
UPPER():將英文字符串變年夜寫,同UCASE()
CONCAT():將多個字符串聯接成一個字符串
語法以下:

UPPER(str)
CONCAT(str1,str2,...)

是以當我們要停止中英文混雜婚配檢索且要疏忽英文年夜小寫時,可使用以下例所示的 SQL 語句:
SELECT * FROM username WHERE UPPER(username) LIKE BINARY CONCATt('%',UPPER('a中文b'),'%')
在該 SQL 中,將搜刮的字段及檢索的內容都停止年夜寫轉換後,再停止二進制婚配。
LIKE 運算符的效力
LIKE 運算符要對字段數據停止一一掃描婚配,現實履行的效力是較差的,哪怕該字段曾經建有索引(a% 這類方法會用到索引)。當數據量較年夜時,要盡量的削減 LIKE 運算符的應用,也沒有太多優化的余地。
在PHP劇本應用LIKE子句
可使用WHERE ... LIKE子句相似的語法在PHP 的 mysql_query() 函數。此函數用於履行SQL敕令,緊接著另外一個PHP mysql_fetch_array()函數可用於獲得一切選定的數據,假如WHERE ... LIKE子句連同SELECT敕令一路應用。

然則,假如WHERE ... LIKE子句正在連同DELETE 或UPDATE敕令應用,PHP函數不再是必需的。

示例
嘗嘗上面的例子,tutorials_tbl表一切記載其作者姓名包括jay將被前往:

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, 
        tutorial_author, submission_date
    FROM tutorials_tbl
    WHERE tutorial_author LIKE "%jay%"';

mysql_select_db('test');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
  echo "Tutorial ID :{$row['tutorial_id']} <br> ".
     "Title: {$row['tutorial_title']} <br> ".
     "Author: {$row['tutorial_author']} <br> ".
     "Submission Date : {$row['submission_date']} <br> ".
     "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved