91在线一级黄片|91视频在线观看18|成人夜间呦呦网站|91资源欧美日韩超碰|久久最新免费精品视频一区二区三区|国产探花视频在线观看|黄片真人免费三级片毛片|国产人无码视频在线|精品成人影视无码三区|久久视频爱久久免费精品

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
了解數(shù)據(jù)庫rlike正則表達式的用法(數(shù)據(jù)庫rlike用法)

正則表達式(Regular Expression)是一種用來匹配字符串和字符模式的特殊文本序列,廣泛應用于文本匹配和替換、數(shù)據(jù)提取等領域。在數(shù)據(jù)庫的查詢和操作中,正則表達式也是一個非常有用的工具。其中,rlike是MySQL和Spark SQL中常用的正則表達式函數(shù)。

本文將從以下三個方面介紹rlike正則表達式的基本用法:語法結構、匹配模式以及實戰(zhàn)應用。

一、語法結構

rlike函數(shù)的一般語法結構如下:

rlike(pattern, string)

其中,pattern為正則表達式模式,string為需要匹配的字符串。函數(shù)返回值為1或0,分別表示string是否匹配pattern。

舉例說明,假設有如下的字符串:

“Hello, world! Good morning!”

我們可以用如下的rlike語句來匹配其中的單詞 “world”:

select ‘Hello, world! Good morning!’ rlike ‘world’

執(zhí)行結果是1,表示字符串中包含 “world”。

需要注意的是,rlike函數(shù)區(qū)分大小寫,因此如果要匹配不區(qū)分大小寫的字符串,可以使用regexp或ilike函數(shù)。

二、匹配模式

rlike函數(shù)的匹配模式主要包括通配符、字符類和限定符。

1. 通配符

rlike函數(shù)支持兩種通配符: “.” 和 ” * “。

“.” : 匹配任意單個字符。例如,rlike(“.e”, “here”)將返回1,表示”here”中包含以”e”結尾的兩個字符的組合。

“*” : 匹配一個或多個重復字符。例如,rlike(“l(fā)*”, “hello”)將返回1,表示”hello”中包含一個或多個 “l(fā)” 的組合。

2. 字符類

rlike函數(shù)支持多種字符類,用于匹配指定的字符集。主要包括以下幾種:

“[abc]” : 匹配方括號內(nèi)的任何一個字符。例如,rlike(“[abc]”, “defgabc”)將返回1,表示”defgabc”中包含字符 “a”、 “b” 或 “c” 中的任何一個。

“[a-z]” : 匹配某一單個字母,并指定其為小寫(a~z)。

“[A-Z]” : 匹配某一單個字母,并指定其為大寫(A~Z)。

“[0-9]” : 匹配任何數(shù)字字符(0~9)。

“[^abc]” : 匹配任何未出現(xiàn)在方括號內(nèi)的字符,”^”表示否定。例如,rlike(“[^abc]”, “defg”)將返回1,表示”defg”中不包含 “a”、 “b” 或 “c” 中的任何一個字符。

3. 限定符

rlike函數(shù)也支持多種限定符,用于指定匹配字符串的數(shù)量。主要包括以下幾種:

“?” : 匹配零個或一個重復字符。例如,rlike(“ab?”, “acb”)將返回1,表示”acb”中包含以 “a” 開始,且后面可能出現(xiàn) “b” 的組合。

“+” : 匹配一個或多個重復字符。例如,rlike(“bc+”, “abcbcb”)將返回1,表示”abcbcb”中含有至少一個 “b” 后面跟隨一個或多個 “c” 的組合。

“{}” : 匹配重復的指定數(shù)量字符。例如,rlike(“a{2,5}”, “a”)將返回0,表示字符串中沒有匹配 “a” 兩次到五次的組合。而rlike(“a{2,5}”, “aaa”)將返回1,表示字符串中匹配了 “a” 三次。

“^” : 匹配行首。例如,rlike(“^abc”, “abcdefg”)將返回1,表示字符串以 “abc” 開頭。

“$” : 匹配行尾。例如,rlike(“efg$”, “abcdefg”)將返回1,表示字符串以 “efg” 結尾。

三、實戰(zhàn)應用

rlike正則表達式在實際生產(chǎn)中有許多應用場景。在數(shù)據(jù)清洗和提取方面,可以用它來去除或查找某些非法字符或信息。以下是一些常見的實際應用場景:

1. 去除非數(shù)字字符

例如,我們需要從某一數(shù)據(jù)庫中提取所有數(shù)字,可以使用如下的語句:

select regexp_replace(string, “[^0-9]+”, “”) from table_name;

其中,”[^0-9]+”表示匹配所有的非數(shù)字字符。

2. 查找郵件地址

例如,我們需要查找某一字符串中所有的郵件地址,可以使用如下的語句:

select * from table_name where string rlike ‘[A-Za-z0-9._%-]+@[A-Za-z]+\\.[A-Za-z]{2,4}’;

其中,”[A-Za-z0-9._%-]+@[A-Za-z]+\\.[A-Za-z]{2,4}”表示匹配郵件地址,其中 “[A-Za-z0-9._%-]+” 匹配用戶名,”[A-Za-z]+” 匹配域名,”[A-Za-z]{2,4}” 匹配域名后綴。

3. 匹配中國手機號碼

例如,我們需要查找某一字符串中所有的中國手機號碼,可以使用如下的語句:

select * from table_name where string rlike ‘^1[3456789]\\d{9}$’

其中,”^1[3456789]\\d{9}$”表示匹配中國手機。”^” 匹配字符串開頭,”$” 匹配字符串結尾?!?[3456789]”匹配以”1″開頭,后面跟隨 “3” 至 “9” 的數(shù)字,”\\d{9}”匹配后面的 9 個任何數(shù)字字符。

本文對rlike正則表達式的基本語法結構、匹配模式以及實際應用場景做了簡單介紹。掌握這些基礎知識,可以更好的應用rlike函數(shù)來處理復雜的字符串和文本數(shù)據(jù)。

相關問題拓展閱讀:

  • 數(shù)據(jù)庫常用sql語句有哪些

數(shù)據(jù)庫常用sql語句有哪些

數(shù)據(jù)庫常用sql語句

  Student(S#,Sname,Sage,Ssex) 學生表

  Course(C#,Cname,T#) 課程表

  SC(S#,C#,score) 成績表

  Teacher(T#,Tname) 教師表

  問題:

  1、查詢“001”課程比“002”課程成績高的所有學生的學號;

 逗仿 select a.S# from (select s#,score from SC where C#=’001′) a,(select s#,score

  from SC where C#=’002′) b

  where a.score>b.score and a.s#=b.s#;

  2、查詢平均成績大于60分的同學的學號和平均成績;

  select S#,avg(score)

  from sc

  group by S# having avg(score) >60;

  3、查詢所有山帆纖同學的學號、姓名、選課數(shù)、總成績;

  select Student.S#,Student.Sname,count(SC.C#),sum(score)

  from Student left Outer join SC on Student.S#=SC.S#

  group by Student.S#,Sname

  4、查詢姓“李”的老師的個數(shù);

  select count(distinct(Tname))

  from Teacher

  where Tname like ‘李%’;

  5、查詢沒學過“葉平”老師課的同學的學號、姓名;

  select Student.S#,Student.Sname

  from Student

  where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’葉平’);

  6、查詢學過“001”并且也學過編號“002”課程的同學的學號、姓名;

  select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#=’001’and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);

 轎做 7、查詢學過“葉平”老師所教的所有課的同學的學號、姓名;

  select S#,Sname

  from Student

  where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’葉平’ group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname=’葉平’));

  8、查詢課程編號“002”的成績比課程編號“001”課程低的所有同學的學號、姓名;

  Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#=’002′) score2

  from Student,SC where Student.S#=SC.S# and C#=’001′) S_2 where score260);

  10、查詢沒有學全所有課的同學的學號、姓名;

  select Student.S#,Student.Sname

  from Student,SC

  where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) =60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分數(shù)

  FROM SC T,Course

  where t.C#=course.C#

  GROUP BY t.C#

  ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC

  20、查詢?nèi)缦抡n程平均成績和及格率的百分數(shù)(用”1行”顯示): 企業(yè)管理(001),馬克思(002),OO&UML (003),數(shù)據(jù)庫(004)

  SELECT SUM(CASE WHEN C# =’001′ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘001’ THEN 1 ELSE 0 END) AS 企業(yè)管理平均分

  ,100 * SUM(CASE WHEN C# = ‘001’ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘001’ THEN 1 ELSE 0 END) AS 企業(yè)管理及格百分數(shù)

  ,SUM(CASE WHEN C# = ‘002’ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘002’ THEN 1 ELSE 0 END) AS 馬克思平均分

  ,100 * SUM(CASE WHEN C# = ‘002’ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘002’ THEN 1 ELSE 0 END) AS 馬克思及格百分數(shù)

  ,SUM(CASE WHEN C# = ‘003’ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘003’ THEN 1 ELSE 0 END) AS UML平均分

  ,100 * SUM(CASE WHEN C# = ‘003’ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘003’ THEN 1 ELSE 0 END) AS UML及格百分數(shù)

  ,SUM(CASE WHEN C# = ‘004’ THEN score ELSE 0 END)/SUM(CASE C# WHEN ‘004’ THEN 1 ELSE 0 END) AS 數(shù)據(jù)庫平均分

  ,100 * SUM(CASE WHEN C# = ‘004’ AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = ‘004’ THEN 1 ELSE 0 END) AS 數(shù)據(jù)庫及格百分數(shù)

  FROM SC

  21、查詢不同老師所教不同課程平均分從高到低顯示

  SELECT max(Z.T#) AS 教師ID,MAX(Z.Tname) AS 教師姓名,C.C# AS 課程ID,MAX(C.Cname) AS 課程名稱,AVG(Score) AS 平均成績

  FROM SC AS T,Course AS C ,Teacher AS Z

  where T.C#=C.C# and C.T#=Z.T#

  GROUP BY C.C#

  ORDER BY AVG(Score) DESC

  22、查詢?nèi)缦抡n程成績第 3 名到第 6 名的學生成績單:企業(yè)管理(001),馬克思(002),UML (003),數(shù)據(jù)庫(004)

  ,,企業(yè)管理,馬克思,UML,數(shù)據(jù)庫,平均成績

  SELECT DISTINCT top 3

  SC.S# As 學生學號,

  Student.Sname AS 學生姓名 ,

  T1.score AS 企業(yè)管理,

  T2.score AS 馬克思,

  T3.score AS UML,

  T4.score AS 數(shù)據(jù)庫,

  ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 總分

  FROM Student,SC LEFT JOIN SC AS T1

  ON SC.S# = T1.S# AND T1.C# = ‘001’

  LEFT JOIN SC AS T2

  ON SC.S# = T2.S# AND T2.C# = ‘002’

  LEFT JOIN SC AS T3

  ON SC.S# = T3.S# AND T3.C# = ‘003’

  LEFT JOIN SC AS T4

  ON SC.S# = T4.S# AND T4.C# = ‘004’

  WHERE student.S#=SC.S# and

  ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)

  NOT IN

  (SELECT

  DISTINCT

  TOP 15 WITH TIES

  ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)

  FROM sc

  LEFT JOIN sc AS T1

  ON sc.S# = T1.S# AND T1.C# = ‘k1’

  LEFT JOIN sc AS T2

  ON sc.S# = T2.S# AND T2.C# = ‘k2’

  LEFT JOIN sc AS T3

  ON sc.S# = T3.S# AND T3.C# = ‘k3’

  LEFT JOIN sc AS T4

  ON sc.S# = T4.S# AND T4.C# = ‘k4’

  ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);

  23、統(tǒng)計列印各科成績,各分數(shù)段人數(shù):課程ID,課程名稱,,,,

  S# as 學生學號,平均成績

  FROM (SELECT S#,AVG(score) 平均成績

  FROM SC

  GROUP BY S#

  ) AS T2

  ORDER BY 平均成績 desc;

  25、查詢各科成績前三名的記錄:(不考慮成績并列情況)

  SELECT t1.S# as 學生ID,t1.C# as 課程ID,Score as 分數(shù)

  FROM SC t1

  WHERE score IN (SELECT TOP 3 score

  FROM SC

  WHERE t1.C#= C#

  ORDER BY score DESC

  )

  ORDER BY t1.C#;

  26、查詢每門課程被選修的學生數(shù)

  select c#,count(S#) from sc group by C#;

  27、查詢出只選修了一門課程的全部學生的學號和姓名

  select SC.S#,Student.Sname,count(C#) AS 選課數(shù)

  from SC ,Student

  where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;

  28、查詢男生、女生人數(shù)

  Select count(Ssex) as 男生人數(shù) from Student group by Ssex having Ssex=’男’;

  Select count(Ssex) as 女生人數(shù) from Student group by Ssex having Ssex=’女’;

  29、查詢姓“張”的學生名單

  SELECT Sname FROM Student WHERE Sname like ‘張%’;

  30、查詢同名同性學生名單,并統(tǒng)計同名人數(shù)

  select Sname,count(*) from Student group by Sname having count(*)>1;;

  31、1981年出生的學生名單(注:Student表中Sage列的類型是datetime)

  select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age

  from student

  where CONVERT(11),DATEPART(year,Sage))=’1981′;

  32、查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列

  Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;

  33、查詢平均成績大于85的所有學生的學號、姓名和平均成績

  select Sname,SC.S# ,avg(score)

  from Student,SC

  where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;

  34、查詢課程名稱為“數(shù)據(jù)庫”,且分數(shù)低于60的學生姓名和分數(shù)

  Select Sname,isnull(score,0)

  from Student,SC,Course

  where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname=’數(shù)據(jù)庫’and score=70 AND SC.S#=student.S#;

  37、查詢不及格的課程,并按課程號從大到小排列

  select c# from sc where scor e80 and C#=’003′;

  39、求選了課程的學生人數(shù)

  select count(*) from sc;

  40、查詢選修“葉平”老師所授課程的學生中,成績更高的學生姓名及其成績

  select Student.Sname,score

  from Student,SC,Course C,Teacher

  where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname=’葉平’ and SC.score=(select max(score)from SC where C#=C.C# );

  41、查詢各個課程及相應的選修人數(shù)

  select count(*) from sc group by C#;

  42、查詢不同課程成績相同的學生的學號、課程號、學生成績

  select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# B.C# ;

  43、查詢每門功成績更好的前兩名

  SELECT t1.S# as 學生ID,t1.C# as 課程ID,Score as 分數(shù)

  FROM SC t1

  WHERE score IN (SELECT TOP 2 score

  FROM SC

  WHERE t1.C#= C#

  ORDER BY score DESC

  )

  ORDER BY t1.C#;

  44、統(tǒng)計每門課程的學生選修人數(shù)(超過10人的課程才統(tǒng)計)。要求輸出課程號和選修人數(shù),查詢結果按人數(shù)降序排列,查詢結果按人數(shù)降序排列,若人數(shù)相同,按課程號升序排列

  select C# as 課程號,count(*) as 人數(shù)

  from sc

  group by C#

  order by count(*) desc,c#

  45、檢索至少選修兩門課程的學生學號

  select S#

  from sc

  group by s#

  having count(*) > = 2

  46、查詢?nèi)繉W生都選修的課程的’課程號和課程名

  select C#,Cname

  from Course

  where C# in (select c# from sc group by c#)

  47、查詢沒學過“葉平”老師講授的任一門課程的學生姓名

  select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname=’葉平’);

  48、查詢兩門以上不及格課程的同學的學號及其平均成績

  select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score2)group by S#;

  49、檢索“004”課程分數(shù)小于60,按分數(shù)降序排列的同學學號

  select S# from SC where C#=’004’and score200

  select 100

  2、變量

  用戶自定義變量使用@開始,使用set給變量賦值。

  set @name=‘孫悟空’;

  select @name;

  select * from student;

   into student values (6,‘孫悟空’,20);

   into student values (8,@name,20);

  set @sid=9,@nid=10

   into student values (@sid,@name,20);

  select @sid+@nid;

  set @sid=@sid+1;

  select @sid;

  set @sname3=(select sname from student where sid=9);

  select @sname3;

  3、系統(tǒng)變量

  系統(tǒng)變量分為全局系統(tǒng)變量和會話系統(tǒng)變量。

  全局系統(tǒng)變量:針對所有默認設置

  會話系統(tǒng)變量:針對當前用戶生效,用戶登錄MySQL會使用全局系統(tǒng)變量,如果會話中更改了變量值,使用更改后的值,不過只針對當前用戶生效。

  show variables 顯示會話系統(tǒng)變量

  show global variables 顯示全局系統(tǒng)變量

  show session variables 顯示會話系統(tǒng)變量

  show global variables like ‘sql_select_limit’;使用通配符顯示匹配的變量設置

  show session variables like ‘sql_select_limit’;系統(tǒng)變量使用@@標識

  select @@global.sql_select_limit 查看某個全局系統(tǒng)變量設置

  select @@session.sql_select_limit 查看某個會話系統(tǒng)變量設置

  set @@session.sql_select_limit=2 設置會話系統(tǒng)變量

數(shù)據(jù)庫rlike用法的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于數(shù)據(jù)庫rlike用法,了解數(shù)據(jù)庫rlike正則表達式的用法,數(shù)據(jù)庫常用sql語句有哪些的信息別忘了在本站進行查找喔。

創(chuàng)新互聯(lián)成都網(wǎng)站建設公司提供專業(yè)的建站服務,為您量身定制,歡迎來電(028-86922220)為您打造專屬于企業(yè)本身的網(wǎng)絡品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專業(yè)的網(wǎng)站建設、設計、制作等服務,是一家以網(wǎng)站建設為主要業(yè)務的公司,在網(wǎng)站建設、設計和制作領域具有豐富的經(jīng)驗。


網(wǎng)頁標題:了解數(shù)據(jù)庫rlike正則表達式的用法(數(shù)據(jù)庫rlike用法)
轉(zhuǎn)載注明:http://m.jiaoqi3.com/article/cojgicg.html