1. 程式人生 > >MySQL中LIKE子句與排序

MySQL中LIKE子句與排序

MySQL中LIKE子句

我們知道在MySQL中使用 SQL SELECT 命令來讀取資料, 同時我們可以在 SELECT 語句中使用 WHERE 子句來獲取指定的記錄。
WHERE 子句中可以使用等號 (=) 來設定獲取資料的條件,如 “runoob_author = ‘Sanjay’”。
但是有時候我們需要獲取 runoob_author 欄位含有 “jay” 字元的所有記錄,這時我們就需要在 WHERE 子句中使用 SQL LIKE 子句。
SQL LIKE 子句中使用百分號(%)字元來表示任意字元,類似於UNIX或正則表示式中的星號 (*)。
如果沒有使用百分號(%), LIKE 子句與等號(=)的效果是一樣的。

語法

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • 你可以在WHERE子句中指定任何條件。
  • 你可以在WHERE子句中使用LIKE子句。
  • 你可以使用LIKE子句代替等號(=)。
  • LIKE 通常與 % 一同使用,類似於一個元字元的搜尋。
  • 你可以使用AND或者OR指定一個或多個條件。
  • 你可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句來指定條件。

在命令提示符中使用 LIKE 子句


例項:

[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> SELECT * from runoob_tbl 
    -> WHERE runoob_author LIKE '%jay';
+-------------+----------------+-----------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 3 | JAVA Tutorial | Sanjay | 2007-05-21 | +-------------+----------------+-----------------+-----------------+ 1 rows in set (0.01 sec) mysql>

在PHP指令碼中使用 LIKE 子句

<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT runoob_id, runoob_title, 
               runoob_author, submission_date
        FROM runoob_tbl
        WHERE runoob_author LIKE "%jay%"';

mysql_select_db('RUNOOB');
$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['runoob_id']}  <br> ".
         "Title: {$row['runoob_title']} <br> ".
         "Author: {$row['runoob_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>

MySQL 排序

我們知道從 MySQL 表中使用 SQL SELECT 語句來讀取資料。
如果我們需要對讀取的資料進行排序,我們就可以使用 MySQL 的 ORDER BY 子句來設定你想按哪個欄位哪中方式來進行排序,再返回搜尋結果。

語法

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...][ASC [DESC]]
  • 你可以使用任何欄位來作為排序的條件,從而返回排序後的查詢結果。
  • 你可以設定多個欄位來排序。
  • 你可以使用 ASC 或 DESC 關鍵字來設定查詢結果是按升序或降序排列。 預設情況下,它是按升序排列。
  • 你可以新增 WHERE…LIKE 子句來設定條件。

在命令提示符中使用 ORDER BY 子句
例項:

[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> SELECT * from runoob_tbl ORDER BY runoob_author ASC;
+-----------+---------------+---------------+-----------------+
| runoob_id | runoob_title  | runoob_author | submission_date |
+-----------+---------------+---------------+-----------------+
|         2 | Learn MySQL   | Abdul S       | 2007-05-24      |
|         1 | Learn PHP     | John Poul     | 2007-05-24      |
|         3 | JAVA Tutorial | Sanjay        | 2007-05-06      |
+-----------+---------------+---------------+-----------------+
3 rows in set (0.00 sec)

mysql> SELECT * from runoob_tbl ORDER BY runoob_author DESC;
+-----------+---------------+---------------+-----------------+
| runoob_id | runoob_title  | runoob_author | submission_date |
+-----------+---------------+---------------+-----------------+
|         3 | JAVA Tutorial | Sanjay        | 2007-05-06      |
|         1 | Learn PHP     | John Poul     | 2007-05-24      |
|         2 | Learn MySQL   | Abdul S       | 2007-05-24      |
+-----------+---------------+---------------+-----------------+
3 rows in set (0.00 sec)

mysql> 

在PHP指令碼中使用 ORDER BY 子句

<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT runoob_id, runoob_title, 
               runoob_author, submission_date
        FROM runoob_tbl
        ORDER BY  runoob_author DESC';

mysql_select_db('RUNOOB');
$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['runoob_id']}  <br> ".
         "Title: {$row['runoob_title']} <br> ".
         "Author: {$row['runoob_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>

相關推薦

MySQLLIKE子句排序

MySQL中LIKE子句 我們知道在MySQL中使用 SQL SELECT 命令來讀取資料, 同時我們可以在 SELECT 語句中使用 WHERE 子句來獲取指定的記錄。 WHERE 子句中可以使用等號 (=) 來設定獲取資料的條件,如 “runoob_au

MysqlLeft Join Right Join Inner Join Full Join的區別

chinese ron 兩張 ansi 左連接 ima money key sel 看看Left Join 與Right Join 與 Inner Join 與 Full Join對表進行操作後得到的結果。 在數據庫中新建兩張表,並插入要測試的數據。 新建表:

MySQL使用索引不使用索引的區別

pan 並發 並發數 table def ring primary innodb zab 為了回答索引對數據庫性能的影響,做了一次簡單的實驗。 測試環境    MySQL 5.7.10 innodb 100萬隨機數據 表結構 CREATE TABLE `

MySQL範式反範式的優缺點

mysql範式化的優點:範式化更新操作通常比反範式化要快。當數據較好的範式化時,就只有很少或者沒有重復數據,所以,只需要修改更少的數據。範式化的表通常更小,可以更好地放在內存裏,所以執行操作會更快。很少有多余的數據意味著檢索列表數據更少需要distinct或者group by 語句。範式化的缺點:範式化設計s

mysql character set collation 的理解

鏈接 ive apple bit spec 解釋 區別 大小 類型 使用 mysql 創建數據表的時候, 總免不了要涉及到 character set 和 collation 的概念, 之前不是很了解。 先來看看 character set 和 collation 的是什麽

mysqlint(3)int(11)有什麽區別嗎?

png 不足 次方 表示 分享 什麽 否則 數據庫 SQ 註意:這裏的M代表的並不是存儲在數據庫中的具體的長度,以前總是會誤以為int(3)只能存儲3個長度的數字,int(11)就會存儲11個長度的數字,這是大錯特錯的。 其實當我們在選擇使用int的類型的時候,不論是i

mysqllike子句

mys 字段長度 lec 直接 php mysql position 查詢 包含 直接上例子 查詢字段以 php 開頭的信息。 SELECT * FROM position WHERE name LIKE ‘php%‘; 查詢字段包含 php 的信息。

Mysql儲存過程自定義函式的區別

建立儲存過程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristi

mysql對比 JSON_VALUE JSON_QUERY

1. JSON概述 MySQL裡的json分為json array和json object。 $表示整個json物件,在索引資料時用下標(對於json array,從0開始)或鍵值(對於json object,含有特殊字元的key要用"括起來,比如$."my name")。 例如:[3, {"a": [5

mysql對分組內容排序

id group sort 1 1 1 2 1 2 3 2 2 4 2

mysqllike語法拼接4種方式

在mysql中,字串與字串之間用空格連線相當於拼接,'a' 'b' 'c' 相當於 'abc' 'a'"b"'c'雖然沒用空格,但由於是不同的字串型別,故也相當於拼接後的'abc'或"abc"  在mysql中,like語法本身為: like  '%str%' 解析:like與

MySQLutf8字符集、排序規則及utf8mb4_bin列大小寫不敏感方法

轉載:https://my.oschina.net/u/1245414/blog/1831347 一、utf8mb4 和 utf8 比較 utf8mb4: A UTF-8 encoding of the Unicode character set using one to four

mysqllike模糊查詢的優化

這是我在一個百萬級資料庫資料匯出遇到的問題 比如這個語句在這個資料庫查詢很慢: select a from tms where b like ‘%haha%’ order by time limit 100; 第一種優化方法(注意:這種方法只適用於haha開頭的): //將haha欄位和

MySQL 的 FOUND_ROWS() ROW_COUNT() 函式

原文地址:https://www.cnblogs.com/digdeep/p/4818660.html   移植sql server 的儲存過程到mysql中,遇到了sql server中的: IF @@ROWCOUNT < 1 對應到mysql中可以使用 FOUND_ROWS() 函

mysqlbinlog_format模式配置詳解

mysql複製主要有三種方式:基於SQL語句的複製(statement-based replication, SBR),基於行的複製(row-based replication, RBR),混合模式複製(mixed-based replication, MBR)。對應的,bi

MySQL使用表別名欄位別名

MySQL 表別名(Alias) SQL 表別名 在 SQL 語句中,可以為表名稱及欄位(列)名稱指定別名(Alias),別名是 SQL 標準語法,幾乎所有的資料庫系統都支援。通過關鍵字 AS 來指定。 表別名語法: SELECT column FROM tab

mysqlRIGHT JOINgroup by一起使用引起的一個大bug

本來按理說這個小問題不值得寫一個部落格的,不過正是這個小問題造成了一個大bug。 本來每月對資料都好好的,但是這一兩天突然發現許多資料明顯不對,這一塊的程式碼和sql有些不是我寫的,不過出現了bug,還是要迎難而上,我就從資料來源頭查起,發現數據源好像也沒有問題。 地毯式搜尋,中間的sql,邏輯一個一個對

MySQLgroup_concat()函式的排序方法

group_concat()函式的引數是可以直接使用order by排序的。666。。下面通過例子來說明,首先看下面的t1表。 比如,我們要檢視每個人的多個分數,將該人對應的多個分數顯示在一起,分數要從高到底排序。可以這樣寫: SELECT username,GROU

MySQL時間戳時間的互相轉換

在有些業務表中,時間欄位並沒有存入類似年月日之類的值,而是時間戳,那麼在前端展示已經進行查詢時就需要進行一次時間戳與時間的轉換操作,用到以下兩個函式: 1.將時間戳轉換為常用的時間格式FROM_UNIXTIME(timestamp,format)範例:select FROM_UNIXTIME(14979612

分析為什麼mysqllike模糊查詢效率低

相比update和insert,一般查詢應該是資料庫中操作最頻繁的。而在有些應用場景需要用到like模糊查詢,那麼對於大資料,查詢的時候就要注意了。現在來分析一下為什麼like語句查詢的效率會很低,測試資料共4000000條,如下圖:第一步:不使用索引下圖可以看出,不使用索引的時候普通查詢與like查詢的耗時