sql中如何统计一字段中字符串的个数
=======================
1、id int 4
2、nr ntext 16
=======================
记录内容为:
====================================
id nr
1 123 234 232 123
2 191 2234 191 3321 267 2654 123
3 212 233 244 298
=======================================
注意:nr字段中的字符串间有一空格,最后一个字符串的最后也有一空格
我想问:怎么统计一条记录中nr字段的字符串个数,且统计的字符串不重复,如第一条记录的nr字段的字符串个数为4个,第二条记录的nr字段的字符串个数为6个(而不是7个)。
数据库是sql server 的,不过我不会写存储过程,请yaweiinfo帮忙解决一下。 展开
declare @s varchar(100)
set @s='156434A27kAsdABCiosd-01&**('
--找出现的次数
select len(@s)-len(replace(@s,'A',''))
SQL中字符串截取函数(SUBSTRING)
1、left(name,4)截取左边的4个字符
列:
SELECT LEFT(201809,4) 年
结果:2018
2、right(name,2)截取右边的2个字符
SELECT RIGHT(201809,2) 月份
结果:09
扩展资料
sql中group by用法:
GROUP BY可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。
GROUP BY必须得配合聚合函数来用,分组之后可以计数(COUNT),求和(SUM),求平均数(AVG)等。
常用聚合函数:count() 计数、sum() 求和、avg() 平均数、max() 最大值、min() 最小值。
SELECT 语句指定了两列(Customer 和 SUM(OrderPrice))。"SUM(OrderPrice)" 返回一个单独的值("OrderPrice" 列的总计),而 "Customer" 返回 6 个值(每个值对应 "Orders" 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。
然后跟原先的字符长度比较, 得出的就是字符串的个数。
嘿嘿~ 刚刚想到的。
select id, len(nr) - len(replace(nr,' ' , '') )
from temp
set @s='156434A27kAsdABCiosd-01&**('
--找出现的次数
select len(@s)-len(replace(@s,'A',''))
--结果
3.
len是取长度的,replace是用空取代空格
这结合就是你要的答案
你试试