SQL正则表达式、列表运算、涉及null的查询
正則表達(dá)式? ? ? ?
????????正則表達(dá)式通常用來(lái)檢索或替換符合某個(gè)模式的文本內(nèi)容,根據(jù)指定的匹配模式匹配文本中符合要求的特殊字符串。例如,從一個(gè)文本文件中提取電話(huà)號(hào)碼,查找一篇文章中重復(fù)的單詞或者替換用戶(hù)輸入的某些詞語(yǔ)等,正則表達(dá)式強(qiáng)大而且靈活,可以應(yīng)用于非常復(fù)雜的查詢(xún)當(dāng)中
在MySQL中使用regexp關(guān)鍵字指定正則表達(dá)式的字符匹配模式,其基本語(yǔ)法如下
where 字段名 regepx '操作符';| 選項(xiàng) | 說(shuō)明 | 示例 |
| ^? | 匹配文本的開(kāi)始字符 | ^b: 匹配以字母b開(kāi)頭的字符串,例如:book、big、banana |
| $ | 匹配文本的結(jié)束字符 | st$:匹配以字符st結(jié)尾的字符串,例如:test、resist、persist |
| . | 匹配任何單個(gè)字符 | b.t:匹配任何b和t之間有一個(gè)字符的字符串,例如:bit、bat、but、 |
| * | 匹配零個(gè)或多個(gè)在它前面的字符 | *n:匹配字符串n前面有任意多個(gè)字符的字符串,例如:fn、ann、faan、abcdn |
| + | 匹配前面的字符1次或多次 | ba+:匹配以b開(kāi)頭后面緊跟至少一個(gè)a的字符串,例如:ba、bay、bare、battle |
| <字符串> | 匹配包含指定字符串的文本 | fa:字符串至少包含fa,例如:fan、afa、faad |
| [字符集合] | 匹配字符集合中的任何一個(gè)字符 | [xz]:匹配x或z,例如:dizzy、zebra、x-ray、extra |
| [^] | 匹配不在括號(hào)中的任何字符 | [^abc]:匹配不包含a、b、c的字符串 |
| 字符串{n,} | 匹配單面的字符串至少n次 | b{2,}:匹配兩個(gè)或更多的b,例如bb、bbbbb、bbbbbb |
| 字符串{m,n} | 匹配前面的字符串至少m次,至多n次。如果n為0,則m為可選參數(shù) | b{2,4}:匹配至少2個(gè)b,最多4個(gè)b,如bb、bbb、bbbb |
舉例
查詢(xún)家庭住址以“濟(jì)”開(kāi)頭的學(xué)生信息
select * from stundet where saddress regexp '濟(jì)';查詢(xún)家庭住址以“號(hào)”結(jié)尾的學(xué)生信息
select * from stundet where saddress regepx '號(hào)$';查詢(xún)學(xué)生電話(huà)號(hào)碼出現(xiàn)“66”數(shù)字的學(xué)生信息
select * from student where sphone regexp '66';列表運(yùn)算
在where子句中,如果需要確定表達(dá)式的取值是否屬于某一列表值之一時(shí),可以使用關(guān)鍵字in或not in來(lái)限定查詢(xún)條件。
語(yǔ)法格式如下
where 表達(dá)式 [not] in 值列表其中,not為可選項(xiàng),當(dāng)值不止一個(gè)時(shí),需要將這些值用括號(hào)括起來(lái),各列表之間使用逗號(hào)(,)隔開(kāi)
舉例
查詢(xún)信息工程系、軟件工程系和計(jì)算機(jī)工程系學(xué)生的姓名和性別
select sname,ssex from stundet where sdpet in('計(jì)算機(jī)工程系','軟件工程系','信息工程系');其中,條件表達(dá)式的另一種表示方法是sdpet='計(jì)算機(jī)工程系'or sdpet='軟件工程系' or sdpet='信息工程系';
涉及null查詢(xún)
當(dāng)數(shù)據(jù)表中值為null時(shí),可以使用is null關(guān)鍵字的where子句查詢(xún),反之要查詢(xún)數(shù)據(jù)表的值不為null時(shí),可以使用is not null關(guān)鍵字
語(yǔ)法格式如下
where 字段 is [not] null;舉例
因?yàn)槟承W(xué)生選修課程后沒(méi)有參加考試,所以有選修記錄,但沒(méi)有考試,查詢(xún)?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)
select sno,con from sc where degrree is null;這里的 is? 不能用 = 代替
查詢(xún)所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)
select sno,con from sc where dergree is not null;總結(jié)
以上是生活随笔為你收集整理的SQL正则表达式、列表运算、涉及null的查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SQL之正则表达式的简单使用
- 下一篇: mysql软件字体模糊_Windows