1. 程式人生 > >sql語句where子句like的用法詳解

sql語句where子句like的用法詳解

在SQL結構化查詢語言中,LIKE語句有著至關重要的作用。

LIKE語句的語法格式是:select * from 表名 where 欄位名 like 對應值(子串),它主要是針對字元型欄位的,它的作用是在一個字元型欄位列中檢索包含對應子串的。

假設有一個數據庫中有個表table1,在table1中有兩個欄位,分別是name和sex二者全是字元型資料。現在我們要在姓名欄位中查詢以“張”字開頭的記錄,語句如下:
select * from table1 where name like "張*"
如果要查詢以“張”結尾的記錄,則語句如下:
select * from table1 where name like "*張"

這裡用到了萬用字元“%”,可以說,like語句是和萬用字元分不開的。下面我們就詳細介紹一下萬用字元。

匹配型別 模式
 舉例 及 代表值
 說明

多個字元
 *
 c*c代表cc,cBc,cbc,cabdfec等
 它同於DOS命令中的萬用字元,代表多個字元。

多個字元
 %
 %c%代表agdcagd等
 這種方法在很多程式中要用到,主要是查詢包含子串的。

特殊字元
 [*]
 a[*]a代表a*a
 代替*

單字元
 ?
 b?b代表brb,bFb等
 同於DOS命令中的?萬用字元,代表單個字元

單數字
 #
 k#k代表k1k,k8k,k0k
 大致同上,不同的是代只能代表單個數字。

字元範圍
 - [a-z]代表a到z的26個字母中任意一個 指定一個範圍中任意一個 
續上
排除 [!字元] [!a-z]代表9,0,%,*等 它只代表單個字元 
數字排除 [!數字] [!0-9]代表A,b,C,d等 同上 
組合型別 字元[範圍型別]字元 cc[!a-d]#代表ccF#等 可以和其它幾種方式組合使用

假設表table1中有以下記錄:
    name                          sex
                張小明              男
    李明天       男
    李a天       女
    王5五       男
    王清五           男

下面我們來舉例說明一下:
例1,查詢name欄位中包含有“明”字的。
      select * from table1 where name like '%明%'
例2,查詢name欄位中以“李”字開頭。
      select * from table1 where name like '李*'

例3,查詢name欄位中含有數字的。
      select * from table1 where name like '%[0-9]%'
例4,查詢name欄位中含有小寫字母的。
      select * from table1 where name like '%[a-z]%'
例5,查詢name欄位中不含有數字的。
      select * from table1 where name like '%[!0-9]%'

以上例子能列出什麼值來顯而易見。但在這裡,我們著重要說明的是萬用字元“*”與“%”的區別。
很多朋友會問,為什麼我在以上查詢時有個別的表示所有字元的時候用"%"而不用“*”?
先看看下面的例子能分別出現什麼結果:
  select * from table1 where name like *明*
    select * from table1 where name like %明%

大家會看到,前一條語句列出來的是所有的記錄,而後一條記錄列出來的是name欄位中含有“明”的記錄,
所以說,當我們作字元型欄位包含一個子串的查詢時最好採用“%”而不用“*”,用“*”的時候只在開頭或者只在結尾時,而不能兩端全由“*”代替任意字元的情況下。


相關推薦

sql語句where子句like用法

在SQL結構化查詢語言中,LIKE語句有著至關重要的作用。LIKE語句的語法格式是:select * from 表名 where 欄位名 like 對應值(子串),它主要是針對字元型欄位的,它的作用是在一個字元型欄位列中檢索包含對應子串的。 假設有一個數據庫中有個表tabl

SQL語句之GROUP BY用法

大家都知道groupby在sql語句中代表按照某個欄位分組,但原理和用法在網上不容易查得到。 下面我用一句話簡介的來說明: 如果select 中出現了非聚合函式的欄位,那麼所有欄位都要在group by後面出現,然而group by後面的分組欄位可以不用在select中出

Sql Server參數化查詢之where in和like實現

blog charindex 語句 pan 建議 ack rop for 臨時表 文章導讀 拼SQL實現where in查詢 使用CHARINDEX或like實現where in 參數化 使用exec動態執行SQl實現where in 參數化 為每一個參數生成一個參數

sql語句之exists/not exists用法

1、Student: Sno Sname Ssex Sage Sdept 200215121 李勇 男 20 CS 200215122 劉晨 女 19 CS 200215123 王敏 女 18 M

sql搜尋like萬用字元的用法

有很多朋友寫了幾年的like搜尋,可能對like後面萬用字元的用法都不瞭解,甚至於%的作用是什麼都不清楚。在這篇文章中,我們就一起來學習一下like查詢中萬用字元的用法吧。我們寫的最多的查詢語句可能是這樣的 select * from computes where 欄位 n

mysql中 where in 用法

MySQL這裏分兩種情況來介紹 1、in 後面是記錄集,如: select * from table where uname in(select uname from user); 2、in 後面是字符串,如: select * from table where uname

Oracle層級詢語句connect by 用法

condition 選擇 sta sele 2.3 循環 條件定義 nbsp 關系 如果表中包含層級數據,那麽你就可以使用層級查詢從句選擇行層級順序。 1.層級查詢從句語法 層級查詢從句語法: { CONNECT BY [ NOCYCLE ] condition [AND

SQL中INNER、LEFT、RIGHT JOIN的區別和用法

相信很多人在剛開始使用資料庫的INNER JOIN、LEFT JOIN和RIGHT JOIN時,都不太能明確區分和正確使用這三種JOIN操作,本文通過一個簡單的例子通俗易懂的講解這三者的區別,希望對大家能帶來幫助。 首先,我們建立示例資料庫和表。同時也要明確一個概念:A INN

numpy.where() 用法

1. np.where(condition, x, y) 滿足條件(condition),輸出x,不滿足輸出y。 >>> aa = np.arange(10) >>> np.where(aa,1,-1) array([-1,

C語言for語句用法

在C語言中,for語句使用最為靈活,它完全可以取代 while 語句。它的一般形式為: for(表示式1; 表示式2; 表示式3) 語句 它的執行過程如下:先求解表示式1。 求解表示式2,若其值為真(非0),則執行for語句中指定的內嵌語句,然後執行下面第3)步;若其值

Oracle層級查詢語句(hierarchical query)connect by 用法

摘要: 1、connect by中的條件就表示了父子之間的連線關係,比如 connect by id=prior  pid。 2、prior,表示在一表上,prior所在列pid的某一值A的記錄行的父親是列id上值等於列pid上值A的記錄行。 3、LEVEL偽列

sql join的用法

1. INNER JOIN 內連線,返回多個表中符合條件的資料而捨棄不符合條件的資料。 Run: SELECT*FROM TABLE_POICATE1 C1 INNERJOIN TABLE_POICATE2 C2 ON C1.CATE1_CODE=C2.CATE1_

switch語句中default用法

當年學C語言switch開關語句的時候,很多人會告訴你它是這麼用的:switch(表示式){ case常量表達式1: 語句1;break; case常量表達式2: 語句2;break; … c

SQL之CASE WHEN用法(CASE WHEN使用總結)

簡單CASE WHEN函式: CASE SCORE WHEN 'A' THEN '優' ELSE '不及格' END CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' END CASE SCORE WHEN 'C' THEN '中' ELSE

php中switch語句用法

Switch語句也是面向物件程式設計語句中最長常見的邏輯控制語句了。Switch 語句用於執行基於多個不同條件的不同動作 – 即當條件不同的時候,執行不同的邏輯操作。 本文介紹php中的switch語句的用法,它跟其他語句中的switch用法差不多的,但注意有

C語言switch語句用法

C語言還提供了另一種用於多分支選擇的switch語句, 其一般形式為: switch(表示式){          case常量表達式1:  語句1;         case常量表達式2:  語句2;         …          case常量表達式n:  語句n

sql各種Join用法

在關係代數中,連線運算是由一個笛卡爾積運算和一個選取運算構成的。首先用笛卡爾積完成對兩個資料集合的乘運算,然後對生成的結果集合進行選取運算,確保只把分別來自兩個資料集合並且具有重疊部分的行合併在一起。連線的全部意義在於在水平方向上合併兩個資料集合(通常是表),併產生一個新

PL/SQL DEVELOPER 基本用法(轉)

PL/SQL DEVELOPER 基本用法詳解(建議寫過第一個儲存過程後的初手必讀)   用過oracle的都抱怨,為了穩定 它提供的圖形化操作 速度慢的讓人傷心呀,p4+128M的機器只要啟動一個   oracle服務就夠讓人傷心的,再在dba studio裡面操作真能讓人

SQLwhere in的用法以及mybatis執行查詢語句,可以在plsql中查詢資料,但是在程式中查詢不到

首先我們要知道where是什麼:一個判斷符。在SQL操作中,控制只選擇指定的行。 in的其實歸類於特殊的比較運算子 expr1 between expr2 and expr3:表示expr1的值在expr2和expr3之間 expr in(expr2,expr3,expr4,

C# sql語句拼接時 like情況的防sql注入的用法

如這樣一個sql語句:select * from game where gamename like '%張三%' 用c#表示的話: string keywords = "張三"; StringBuilder strSql=new StringBuil