SQL查询语句,提取某个字符后面的字符

例如表A,列a
[email protected]
[email protected]
[email protected]

[email protected]
查询@后面的,并显示出来。且显示有多少个。
结果如下:
vip.qq.com 1
qq.com 2
163.com 1
拜谢。

可以使用 charindex找出@所在的位置,然后进行字符串的处理。最后再汇总。
示例如下:
select right(a,len(a) - charindex('@',2) ) a,count(1) from A
group by right(a,len(a) - charindex('@',2) )追问

这样查出来的是显示每一个的了。。和a,count(a) from A group by a 的效果一样。。。

追答

select right(a,len(a) - charindex('@',a) ) a,count(1) from A
group by right(a,len(a) - charindex('@',a) )

刚才写错了,charindex里的2要换成 a
这是根据后几位汇总了。
显示的结果肯定是如下的结果。
vip.qq.com 1
qq.com 2
163.com 1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-02
SELECT RIGHT(a,LEN(a)-CHARINDEX('@',a)) aa,COUNT(1)
FROM A
GROUP BY RIGHT(a,LEN(a)-CHARINDEX('@',a))
第2个回答  2013-08-02
select right(a, len(a) - charindex('@',a)) ,count(*) from A
group by right(a,len(a) - charindex('@',a))
第3个回答  2013-08-02
select substring(a,PATINDEX('%@%',a),10) mc,
count(substring(a,PATINDEX('%@%',a),10)) sl
from A
group by substring(a,PATINDEX('%@%',a),10)追问

可以达到部分效果,但是限定了显示的字符,@twvampire 的这个很好用。
感谢您的回答

追答

case when PATINDEX('%@%',a)>0 一下呀

第4个回答  2013-08-02
什么数据库?追问

sql 2008