例如:test列的值字符串为:青铜峡/P.MH42.5/袋装
                青铜峡/P.MH42.5/吨袋包
                青铜峡/P.MH42.5/散装
现在想取第2个“/”后的值,就是袋装或吨袋包不知道如何写SQL
谢谢了
期望是substring和CHARINDEX函数的

解决方案 »

  1.   

    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([test] varchar(22))
    insert [tb]
    select '青铜峡/P.MH42.5/袋装' union all
    select '青铜峡/P.MH42.5/吨袋包' union all
    select '青铜峡/P.MH42.5/散装'
    go
    select right(test,charindex('/',reverse(test))-1) as result from tb/**
    result
    ----------------------
    袋装
    吨袋包
    散装(3 行受影响)
    **/
      

  2.   

    declare @var nvarchar(32)='青铜峡/P.MH42.5/散装'
    select REVERSE(substring(reverse(@var),0,CHARINDEX('/',reverse(@var),0)))as new
    /*
    new
    散装
    */
      

  3.   

    declare @s nvarchar(30);
    set @s = '青铜峡/P.MH42.5/袋装';--方法一 使用substring与CHARINDEX
    SELECT substring(substring(@s, CHARINDEX('/', @s) + 1, len(@s)), CHARINDEX('/', substring(@s, CHARINDEX('/', @s) + 1, len(@s)))+ 1, len(@s));--方法二 使用REVERSE
    select  REVERSE(substring(REVERSE(@s), 1, CHARINDEX('/', REVERSE(@s))-1));/*
    ------------------------------
    袋装
    */