数据库-SQL中like的用法
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
在SQL結(jié)構(gòu)化查詢語言中,LIKE語句有著至關(guān)重要的作用。
LIKE語句的語法格式是:select * from 表名 where?字段名?like?對應(yīng)值(子串),它主要是針對字符型字段的,它的作用是在一個(gè)字符型字段列中檢索包含對應(yīng)子串的。
假設(shè)有一個(gè)數(shù)據(jù)庫中有個(gè)表table1,在table1中有兩個(gè)字段,分別是name和sex二者全是字符型數(shù)據(jù)。現(xiàn)在我們要在姓名字段中查詢以“張”字開頭的記錄,語句如下:
?????select * from table1 where name?like?"張*"
?????如果要查詢以“張”結(jié)尾的記錄,則語句如下:
?select * from table1 where name?like?"*張"
?????這里用到了通配符“*”,可以說,like語句是和通配符分不開的。下面我們就詳細(xì)介紹一下通配符。
| 匹配類型 | 模式 | 舉例及代表值 | 說明 |
| 多個(gè)字符 | * | c*c代表cc,cBc,cbc,cabdfec等 | 它同于DOS命令中的通配符,代表多個(gè)字符。 |
| 多個(gè)字符 | % | %c%代表agdcagd等 | 這種方法在很多程序中要用到,主要是查詢包含子串的。 |
| 特殊字符 | [*] | a[*]a代表a*a | 代替* |
| 單字符 | ? | b?b代表brb,bFb等 | 同于DOS命令中的?通配符,代表單個(gè)字符 |
| 單數(shù)字 | # | k#k代表k1k,k8k,k0k | 大致同上,不同的是代只能代表單個(gè)數(shù)字。 |
| 字符范圍 | - | [a-z]代表a到z的26個(gè)字母中任意一個(gè) | 指定一個(gè)范圍中任意一個(gè) |
| 排除 | [!字符] | [!a-z]代表9,0,%,*等 | 它只代表單個(gè)字符 |
| 數(shù)字排除 | [!數(shù)字] | [!0-9]代表A,b,C,d等 | 它只代表單個(gè)字符 |
| 組合類型 | 字符[范圍類型]字符 | cc[!a-d]#代表ccF#等 | 可以和其它幾種方式組合使用 |
?
假設(shè)表table1中有以下記錄:
name????????????sex
?????????????張小明 男
李明天 男
李天 ? ?女
王五 ? ?男
王清五 男
?
下面我們來舉例說明一下:
- 例1,查詢name字段中包含有“明”字的。
select * from table1 where name?like?'%明%'
- 例2,查詢name字段中以“李”字開頭。
select * from table1 where name?like?'李*'
- 例3,查詢name字段中含有數(shù)字的。
select * from table1 where name?like?'%[0-9]%'
- 例4,查詢name字段中含有小寫字母的。
select * from table1 where name?like?'%[a-z]%'
- 例5,查詢name字段中不含有數(shù)字的。
select * from table1 where name?like?'%[!0-9]%'
以上例子能列出什么值來顯而易見。但在這里,我們著重要說明的是通配符“*”與“%”的區(qū)別。
?
?
很多朋友會(huì)問,為什么我在以上查詢時(shí)有個(gè)別的表示所有字符的時(shí)候用"%"而不用“*”?先看看下面的例子能分別出現(xiàn)什么結(jié)果:
select * from table1 where name?like?'*明*'
???????select * from table1 where name?like?'%明%'
?
大家會(huì)看到,前一條語句列出來的是所有的記錄,而后一條記錄列出來的是name字段中含有“明”的記錄,所以說,當(dāng)我們作字符型字段包含一個(gè)子串的查詢時(shí)最好采用“%”而不用“*”,用“*”的時(shí)候只在開頭或者只在結(jié)尾時(shí),而不能兩端全由“*”代替任意字符的情況下。
?
轉(zhuǎn)載于:https://my.oschina.net/Clarences/blog/895073
總結(jié)
以上是生活随笔為你收集整理的数据库-SQL中like的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黄东旭:Cloud-Native 的分布
- 下一篇: 条款10 令operator=返回一个r