当前位置:首页 > 科技数码

字符统计 SQL如何统计字符出现次数?

朋友们,我们在写SQL脚本时,经常会碰到一些个看似简单、却无从下手的问题,这类问题说大不大、说小也不小,经常会搞的我们很头痛。

比如,

如何使用SQL语句统计字符在某个字符串中出现的次数?

这就是个看似简单的问题,遍查SQL支持的字符串函数(至少在MSSQL中),并没有发现有直接可用的函数。

其实,绝大部分情况下,只要我们学会了变通,很多让我们苦恼的问题很容易就迎刃而解了。不信请您往下看。

不变通也能解决问题,虽然复杂,但用到的技术都是基本功

因为没有相应的内置函数,大部分朋友首先想到的是:

把整个字符串按照字符位置遍历,一个个匹配

。这种方法应该是大部分朋友们首先会想到的方法。

这个方法当然肯定可行,因为笔者以前就这样干过。我把曾经写过的脚本改造下贴出来,您看看多麻烦:

--定义变量declare @pos bigint=1;declare @len bigint;declare @char nvarchar(1);declare @text nvarchar(max);declare @val varchar(max)=space(0);declare @count bigint=0;--初始化一些变量set @text=N"印度嚣张、越南阴险、美国霸道、中国低调、、、";set @len=len(@text);--统计“、”出现个数while @pos<=@len begin --将所有的部分循环完全 set @char=substring(@text,@pos,1) if @char="、" set @count+=1; set @pos=@pos+1 --end--显示个数print @count;

上面的代码段,主要用来统计字符串@text中包含的“、”的个数,下图是执行的效果:

为了统计“、”的个数,需要通过while循环,将字符串中所有字符做一次遍历,获取每个位置字符使用的是substring函数,通过变量@pos记录当前字符的位置,循环一次,该变量累加1表示位置后移一位。

这种方法虽然挺复杂,但所用到的都是SQL的基础知识,当然也需要一定的SQL功底,不管您喜不喜欢,最起码您要能看得懂这类代码对吧。

这种方式除了麻烦,还有致命缺点,比如,有时我们需要在某条SQL脚本中、根据某个字段中含有某个字符的个数来做排序或判断,这种方法就麻烦了,您需要写成自定义函数调用才行。

世上本无事、庸人自扰之,我下面为您提供一种变通方式,一条脚本实现之。

变通方法需要灵活变通,需要您换换思考的方式!

正向思维中,查找字符串中包含的某个字符的个数,当然是通过遍历挨个对比。其实我们可以采用逆向思维:如果我们把要找的字符从字符串中全部干掉,那字符串减少的长度不就是包含的个数么?!

如何干掉待查找字符呢?这就要用到另一个字符串处理函数replace。脚本如下:

declare @text nvarchar(max)=N"印度嚣张、越南阴险、美国霸道、中国低调、、、";select len(@text)-len(replace(@text,"、",space(0)));

简单吧,我们使用字符串长度减去替换成space(0)之后的长度,不正是“、”出现的次数么?

下面是运行效果:

与第一种方法相比,第二种方法可谓是简单快捷、殊途同归。很多时候我们需要将结果嵌入在SQL中,比如在where条件中、排序时等,如果用到该个数做判断或排序,您就只能用第二种方法、或者将第一种脚本改成自定义函数来调用了。

1.《字符统计 SQL如何统计字符出现次数?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《字符统计 SQL如何统计字符出现次数?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/486965.html

上一篇

定向减肥 减肥新方案:纳米粒子定向输药

下一篇

百度推广价格 百度竞价排名终于不再以价格为主

云服务器存储 5个数据告诉你亚马逊云存储有多大

云服务器存储 5个数据告诉你亚马逊云存储有多大

本站讯 11月15日消息,据彭博社报道,亚马逊的云平台庞大而复杂,几乎可以说,支持这一平台的数据中心可以构成地球上最大的计算机。本周,在一年一度的re:Invent 大会上,亚马逊对AWS服务进行了诸多解说,对于正在物色云平台的企业而言,亚马逊的这番推介使AWS成为一项更具吸引力的选择。曾为AWS项目工作的亚马逊前员工乔什•斯特拉(Josh St...

数控开料机哪个品牌好 开料机系统怎么选择?哪个数控系统比较好?

  • 数控开料机哪个品牌好 开料机系统怎么选择?哪个数控系统比较好?
  • 数控开料机哪个品牌好 开料机系统怎么选择?哪个数控系统比较好?
  • 数控开料机哪个品牌好 开料机系统怎么选择?哪个数控系统比较好?

rand函数 解读Excel中的RAND函数和RANDBETWEEN函数用法和差异

  • rand函数 解读Excel中的RAND函数和RANDBETWEEN函数用法和差异
  • rand函数 解读Excel中的RAND函数和RANDBETWEEN函数用法和差异
  • rand函数 解读Excel中的RAND函数和RANDBETWEEN函数用法和差异
七日年化是什么意思 七日年化收益率是什么意思 这个数值越高越好吗

七日年化是什么意思 七日年化收益率是什么意思 这个数值越高越好吗

相信很多市民都有投资过货币基金,如支付宝中的理财产品余额宝,在这些理财产品中都会显示七日年化收益率,但是一些刚入投资圈的投资者,会问及七日年化收益率是什么意思?这个数值越高越好吗?对此,下面我们就来了解一下吧。基金收益率 七日年化收益率是货币基金过去七天每万份基金份额净收益折合成的年收益率。货币基金的每日收益情况都会随着基金经理的操作和货币市场利...

半角字符 半角字符怎么输入   如何切换为全角字符

半角字符 半角字符怎么输入 如何切换为全角字符

现在我们的生活水平在不断的提高,电脑也随之在我们的生活中变得很常见,电脑的功能是比较的多的,我们在使用电脑的时候经常就会遇到很多的问题。例如,有些人在打字的时候就不知道怎么切换到全角字符,于是打出来的字符的间距就会比较的大,也不是很美观。小编针对这一情况,来具体的教大家究竟该半角字符如何进行切换。希望大家能仔细的阅读一下。  半角字符怎么输入?如...

word首行缩进2字符 如何将Word中将全文段落设置为首行缩进2字符

word首行缩进2字符 如何将Word中将全文段落设置为首行缩进2字符

在【段落】选项中将【首行缩进】的缩进值调整为【2】即可。以下是详细介绍:  1、首先全选文本,可以通过光标或者是直接使用【Ctrl】+【A】全选;  2、上方【布局】选项卡,选择【段落】,点击栏目右下角的按钮展开【段落】更多的选项;  3、在段落更多功能选项中,在【缩进和间距】的标签页,找到右侧【特殊格式】;  4、在下拉图标当中,我们选择【首行...

function js中function函数的使用方法

  • function js中function函数的使用方法
  • function js中function函数的使用方法
  • function js中function函数的使用方法
split函数 split函数

split函数 split函数

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #333333; -webkit-text-stroke: #333333; background-color: #ffffff}span.s1 {font-kerning: none}span.s2 {font-k...