比如我通过查询READ_COUNT_LOG字段得到:20081001:0;20081101:0;20081201:0;20090101:0;20090201:0;20090301:620090401:7;20090501:8;20090601:4;20090701:420091001:13;20091101:26;20091201:9;20100101:12等等这些类似的字符串,我现在就是希望这个在得到的READ_COUNT_LOG中得到最后一个冒号后面的所有字符

解决方案 »

  1.   

    第一,正则
    第二,substring,先用LastIndexOf找到最后冒号位置,在从0去substring到这个位置
      

  2.   

    用Substring截取就可以
    string val= "20090501:8;20090601:4;20090701:420091001:13;20091101:26;20091201:9;20100101:12";
    string values= val.Substring(val.LastIndexOf(";")+1);
      

  3.   

    sql 中没有LastIndexOf这个函数吧
      

  4.   

    楼主,你从sql中查出来,存到一个string中,就可以
      

  5.   

    得到12
    Declare @S1 varchar(100)
       Select @S1='20090501:8;20090601:4;20090701:420091001:13;20091101:26;20091201:9;20100101:12'
       select right(@S1,charindex(':',REVERSE(@S1))-1)
      

  6.   

    sql中有REVERSE ,CHARINDEX ,LEFT,REVERSE
      

  7.   

    DECLARE @str nvarchar(max)
    SET @str='20081001:0;20081101:0;20081201:0;20090101:0;20090201:0;20090301:620090401:7;20090501:8;20090601:4;20090701:420091001:13;20091101:26;20091201:9;20100101:12'
    SELECT REVERSE(LEFT(REVERSE(@str),CHARINDEX(':',REVERSE(@str))-1))
      

  8.   

    select reverse(substring(reverse('20090301:6;20090401:7;20090401:800;20090401:7'),1,charindex(':',reverse('20090301:6;20090401:7;20090401:800;20090401:7')) - 1))
    这样是对的那么我如果想找最后一个20090401:后面的7,这样能不能实现呢????这样的话是以20090401:为分割的!这个又要怎么去做呢???。
      

  9.   

    这是我最后的方法,贴出来和大家分享
    DECLARE
        @str varchar(8000),
        @search_str varchar(10),
        @a INT,
        @string VARCHAR(100)
    SELECT
        @str = ';20100701:15;20100801:11;20100901:9;20101001:9;20101101:1;20101201:9;20110107:8;20110201:6;20110301:4;20110401:3;20110601:15;20110701:3;20110801:3;20110901:2;20111001:5;20111101:6;20120105:4;20120201:0;20120410:4;20120410:0;20120411:0',
        @search_str = '20120410:'SELECT 
        @a=CASE 
            WHEN CHARINDEX(@search_str, @str) = 0 THEN 0
            ELSE LEN(@str) - CHARINDEX(REVERSE(@search_str), REVERSE(@str)) - LEN(@search_str) + 2
        END
    SELECT @string=stuff(@str,1,@a+LEN(@search_str)-1,'')
    SELECT LEFT(@string,CHARINDEX(';',@string)-1)