mysql推薦查詢 MySQL模糊查詢語法(推薦)

2021-10-18 22:27:44 字數 3700 閱讀 7400

$sql="select * from table_name where field_name like '%$var%'";

$result=mysql_query($sql) or die;

mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi、grep和sed的擴充套件正規表示式

模式匹配的格式。

sql的模式匹配允許你使用「_」匹配任何單個字元,而「%」匹配任意數目字元(包括零個字元)。

在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你使用sql模式時,你不

能使用=或!=;而使用like或not like比較操作符。

為了找出以「b」開頭的名字:

mysql> select * from pet where name like "b%";

| name | owner | species | *** | birth | death |

| buffy | harold | dog | f | 1989-05-13 | null |

| bowser | diane | dog | m | 1989-08-31 | 1995-07-29 |

為了找出以「fy」結尾的名字:

mysql> select * from pet where name like "%fy";

| name | owner | species | *** | birth | death |

| fluffy | harold | cat | f | 1993-02-04 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

為了找出包含乙個「w」的名字:

mysql> select * from pet where name like "%w%";

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| bowser | diane | dog | m | 1989-08-31 | 1995-07-29 |

| whistler | gwen | bird | null | 1997-12-09 | null |

為了找出包含正好5個字元的名字,使用「_」模式字元:

mysql> select * from pet where name like "_____";

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

由mysql提供的模式匹配的其他型別是使用擴充套件正規表示式。當你對這類模式進行匹配測試時,使用

regexp和not regexp操作符(或rlike和not rlike,它們是同義詞)。

擴充套件正規表示式的一些字元是:

「.」匹配任何單個的字元。

乙個字元類「[...]」匹配在方括號內的任何字元。例如,「[abc]」匹配「a」、「b」或「c」。

為了命名字元的乙個範圍,使用乙個「-」。「[a-z]」匹配任何小寫字母,而「[0-9]」匹配任

何數字。

「 * 」匹配零個或多個在它前面的東西。例如,「x*」匹配任何數量的「x」字元,「[0-9]*」

匹配的任何數量的數字,而「.*」匹配任何數量的任何東西。

正規表示式是區分大小寫的,但是如果你希望,你能使用乙個字元類匹配兩種寫法。例如,

「[aa]」匹配小寫或大寫的「a」而「[a-za-z]」匹配兩種寫法的任何字母。

如果它出現在被測試值的任何地方,模式就匹配(只要他們匹配整個值,sql模式匹配)。

為了定位乙個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用「^」或在模式的

結尾用「$」。

為了說明擴充套件正規表示式如何工作,上面所示的like查詢在下面使用regexp重寫:

為了找出以「b」開頭的名字,使用「^」匹配名字的開始並且「[bb]」匹配小寫或大寫的「b」:

mysql> select * from pet where name regexp "^[bb]";

| name | owner | species | *** | birth | death |

| buffy | harold | dog | f | 1989-05-13 | null |

| bowser | diane | dog | m | 1989-08-31 | 1995-07-29 |

為了找出以「fy」結尾的名字,使用「$」匹配名字的結尾:

mysql> select * from pet where name regexp "fy$";

| name | owner | species | *** | birth | death |

| fluffy | harold | cat | f | 1993-02-04 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

為了找出包含乙個「w」的名字,使用「[ww]」匹配小寫或大寫的「w」:

mysql> select * from pet where name regexp "[ww]";

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| bowser | diane | dog | m | 1989-08-31 | 1995-07-29 |

| whistler | gwen | bird | null | 1997-12-09 | null |

既然如果乙個正規表示式出現在值的任何地方,其模式匹配了,就不必再先前的查詢中在模式的兩

方面放置乙個萬用字元以使得它匹配整個值,就像如果你使用了乙個sql模式那樣。

為了找出包含正好5個字元的名字,使用「^」和「$」匹配名字的開始和結尾,和5個「.」例項在

兩者之間:

mysql> select * from pet where name regexp "^.....$";

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

你也可以使用「」「重複n次」操作符重寫先前的查詢:

mysql> select * from pet where name regexp "^.$";

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

查詢數字和其他的模糊查詢語句

select * from pet where name regexp "[^a-za-z].";

分享到:

2010-06-08 14:28

瀏覽 1500

分類:資料庫

mysql處理查詢模型 Mysql的查詢模型

mysql查詢模型 把列看成變數,把where後面看成php中的if exp 表示式 哪一行能讓exp為真,哪一行就能取出來 還有列既然可以看作是變數,變數之間可以進行與運算。下面有一道題目可以幫助我們更好的理解列是變數這一問題 把num值處於 20,29 之間,改為20 num值處於 30,39 ...

mysql 取模遷移資料 mysql 取模分表

取模分表,根據時間維度進行分表自定義的hash 分表後的資料複製,一般採用insert select語句將原有表的資料匯入新的分表,或者直接copy原表的資料到分表中。比如根據id取模分四張表,分表後把原有資料複製示例如下。insert into user1 id,name,extdo,hobbys...

mysql刪除查詢 MySQL 刪除查詢

如果想從 mysql 表中刪除記錄,就要用到 sql 命令 delete from 可以在命令列中使用該命令,也可以在 php 指令碼中使用它。語法格式 下面是利用 delete 命令刪除 mysql 表中資料的一般語法格式 delete from table name where clause 如...