sql中如何统计一字段中字符串的个数

我建一张表temp结构如下:
=======================
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 语句解决了这个问题。

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-02-19
用replace , 将空格替换成‘’,就是空的,
然后跟原先的字符长度比较, 得出的就是字符串的个数。
嘿嘿~ 刚刚想到的。

select id, len(nr) - len(replace(nr,' ' , '') )
from temp本回答被提问者采纳
第2个回答  推荐于2017-09-03
declare @s varchar(100)
set @s='156434A27kAsdABCiosd-01&**('
--找出现的次数
select len(@s)-len(replace(@s,'A',''))
--结果
3.
第3个回答  2009-02-19
select len(REPLACE (nr , ' ' , '' )) from temp

len是取长度的,replace是用空取代空格
这结合就是你要的答案
你试试
第4个回答  2009-02-19
看你用什么样的数据库去实现,sql server , oracle 所使用的函数语句有出入的。查查具体数据库的函数、语句。做个存储过程应该就能搞定
相似回答