sql中正则匹配/正则表达式的应用

您所在的位置:网站首页 sql可以用正则表达式表示吗 sql中正则匹配/正则表达式的应用

sql中正则匹配/正则表达式的应用

2024-07-16 07:04| 来源: 网络整理| 查看: 265

正则表达式在开发过程中作用明显,灵活多变的匹配方式提供了处理复杂数据的可能性。

在正式使用前,要了解基本组成元素和语法结构,并了解如何拼凑和理解。

一、基本元素

元素释义示例^匹配起始字符^a : 以a开头$匹配结尾字符ab$:以ab结尾.匹配单个字符a.c:a和c之间任意单个字符均可,如abc*匹配任意个数在此之前的字符a*b:b前方出现任意次数的a均可,包括0次+匹配至少1个在此之前的字符ab+:a后紧跟的b至少1次即可[]

匹配[]方括号中任意单个字符

匹配[^]不在方括号中的内容

[ab]:存在a或b即可 ;[0-9]: 0到9任意数字

[^ab]:存在不是a或b的字符即可

{}

匹配{n} n个前面的字符

匹配{n,m} n-m个前面的字符

a{1} :a; a{2}:aa;包含即可

a{1,2}:a或aa;a{1,3}:a,aa,aaa;包含即可 

?匹配前方字符,可有可无a?: a是否出现都可()将元素组合(a+[0-9])? : 括号内a和任意数字组合出现皆可,但结合? 表示括号内内容可有可无

                                                                                      * 若有更好的解释或解释错误,请纠正我

二、示例

不同的开发语言环境,正则的关键字不一样。此处示例采用的为clickhouse,关键字为MATCH 函数用于在字符串中使用正则表达式进行匹配,语法是match(haystack, pattern)。如果是单纯的包含等操作可以用其他专门的语法类似like、position等替代,以下操作多为上述元素组合使用。

 1、匹配字符中是否包含数字

-- 是否包含任意数字 select match('test.adb', '[0-9]'); -- 返回0 select match('t1est.a9db', '[0-9]'); -- 返回1

2、是否所有字符都是数字

-- 匹配是否全部由数字组成 select match('1623234', '^[0-9]*$') --返回1 select match('1623234', '^[0-9]+$') --返回1

* 和 + 在此处的含义结合元素含义去理解,不解可以咨询我。

3、是否是数值

注意数值有整型和浮点型,同时也有正负。

select match('2.2', '^-?[0-9]+(\.[0-9])?$') -- 返回1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3