字段 ID    值
     int   narchar
     1     14941|1|2010-9-4 10:05:10,15015|1|2010-9-4 10:04:40,12166|1|2010-9-4 8:32:25     
     2     14869|1|2010-9-4 10:03:58
     3     14843|1|2010-9-4 9:38:58
用SQL统计出  1、数值","前||2个竖线中间的ID,的信息有多少条
             2、每个“,”号前第一个“|”的编号有几个
    不重复的    SQL语句正确答案应该是  |1| 的有 3 条,|1|参与的第一个|前的不同编号为 5 个
急,希望高手帮忙,答案已经有了,就是希望知道SQL语句怎么写

解决方案 »

  1.   

    第一个
    select count(*) from tb 
    where charindex('|1|',substring(narchar,1,charindex(' ',narchar,1))) >0
      

  2.   

    忘了测试数据。if object_id('tb')>0
    drop table tb
    create table tb
    (
    id int,
    narchar varchar(100)
    )
    insert into tb 
    select 1, '14941|1|2010-9-4 10:05:10,15015|1|2010-9-4 10:04:40,12166|1|2010-9-4 8:32:25'
    union all
    select 2, '14869|1|2010-9-4 10:03:58'
    union all
    select 3, '14843|1|2010-9-4 9:38:58'
    查询
    select count(*) from tb 
    where charindex('|1|',substring(narchar,1,charindex(' ',narchar,1))) >0结果
    3
      

  3.   

    错了错了
    不好意思
    那第二个SQL了?
      

  4.   

    第一个应该是这样好一点
    select count(*) from tb
    where isnumeric(substring(narchar,charindex('|',narchar,1)+1,charindex('|',substring(narchar,charindex('|',narchar,1),len(narchar)),1)))=1结果
    3
      

  5.   


    select sum((len(narchar)-len(replace(narchar,'|1|','')))/3) as 个数
    from tb
    结果
    5