AO-0.25-4
AO-0.37-4
Y2-1.5-2(1004喷塑)
Y2-1.5-2(400V.50HZ)
Y2-1.5-2(415V.50HZ)
Y2-1.5-2(B5全圆盖)
Y2-1.5-2(不喷不订)
Y2-1.5-2(高温轴承)
Y2-1.5-2(加150度PTC)
Y2-1.5-2(菱型PEM-SEL)
Y2-1.5-2(铝壳)
Y2-1.5-2(铝壳)
Y2-1.5-2(铭牌订IP54)
Y-0.55-4
Y-0.55-4
Y-0.55-4如何去除第一个'-’及'-'前的字符和‘()’及‘()’中的内容有些‘()’前还有空格变成如下:
0.25-4
0.37-4
1.5-2
1.5-2
1.5-2
1.5-2
1.5-2
1.5-2
1.5-2
1.5-2
1.5-2
1.5-2
1.5-2
0.55-4
0.55-4
0.55-4

解决方案 »

  1.   

    DECLARE @str VARCHAR(100)
    SET @str = 'Y2-1.5-2(1004喷塑)'
    SELECT STUFF(STUFF(@str, 1, CHARINDEX('-', @str), ''),
                 CASE WHEN CHARINDEX('(', @str) = 0 THEN 1
                      ELSE CHARINDEX('(', STUFF(@str, 1, CHARINDEX('-', @str), ''))
                 END, CHARINDEX(')', STUFF(@str, 1, CHARINDEX('-', @str), '')), '')
    ----结果1.5-2注意里面的括号。
      

  2.   


    create table aa
    (
    aad nvarchar(200)
    )
    insert into aa
    select 'AO-0.25-4'
    union ALL select 'AO-0.37-4'
    union ALL select 'Y2-1.5-2(1004喷塑)'
    union ALL select 'Y2-1.5-2(400V.50HZ)'
    union ALL select 'Y2-1.5-2(415V.50HZ)'
    union ALL select 'Y2-1.5-2(B5全圆盖)'
    union ALL select 'Y2-1.5-2(不喷不订)'
    union ALL select 'Y2-1.5-2(高温轴承)'
    union ALL select 'Y2-1.5-2(加150度PTC)'
    union ALL select 'Y2-1.5-2(菱型PEM-SEL)'
    union ALL select 'Y2-1.5-2(铝壳)'
    union ALL select 'Y2-1.5-2(铝壳)'
    union ALL select 'Y2-1.5-2(铭牌订IP54)'
    union ALL select 'Y-0.55-4'
    union ALL select 'Y-0.55-4'
    union ALL select 'Y-0.55-4'SELECT *,STUFF(CASE WHEN CHARINDEX('(',aad)>0 THEN STUFF(aad,CHARINDEX('(',aad),CHARINDEX(')',aad),'')
             ELSE aad END,1,CHARINDEX('-',REPLACE(CASE WHEN CHARINDEX('(',aad)>0 THEN STUFF(aad,CHARINDEX('(',aad),CHARINDEX(')',aad),'')
             ELSE aad END,' ','')),'') FROM AA
      

  3.   


    create table #t(col varchar(20))
    insert into #t 
    select 'AO-0.25-4' union all
    select 'AO-0.37-4' union all
    select 'Y2-1.5-2(1004喷塑)' union all
    select 'Y2-1.5-2(400V.50HZ)'select case when charindex('(',col)>0 then stuff(right(col,len(col) -charindex('-',col)),charindex('(',right(col,len(col) -charindex('-',col)))
    ,charindex(')',right(col,len(col) -charindex('-',col))),'') else right(col,len(col) -charindex('-',col)) end
     from #t
    0.25-4
    0.37-4
    1.5-2
    1.5-2(4 row(s) affected)
      

  4.   

    DECLARE @TABLE TABLE (NN NVARCHAR(20))INSERT @TABLE SELECT 'AO-0.25-4'
    INSERT @TABLE SELECT 'AO-0.37-4'
    INSERT @TABLE SELECT 'Y2-1.5-2(1004喷塑)'
    INSERT @TABLE SELECT 'Y2-1.5-2(400V.50HZ)'
    INSERT @TABLE SELECT 'Y2-1.5-2(415V.50HZ)'
    INSERT @TABLE SELECT 'Y2-1.5-2(B5全圆盖)'
    INSERT @TABLE SELECT 'Y2-1.5-2(不喷不订)'
    INSERT @TABLE SELECT 'Y2-1.5-2(高温轴承)'
    INSERT @TABLE SELECT 'Y2-1.5-2(加150度PTC)'
    INSERT @TABLE SELECT 'Y2-1.5-2(菱型PEM-SEL)'
    INSERT @TABLE SELECT 'Y2-1.5-2(铝壳)'
    INSERT @TABLE SELECT 'Y2-1.5-2(铝壳)'
    INSERT @TABLE SELECT 'Y2-1.5-2(铭牌订IP54)'
    INSERT @TABLE SELECT 'Y-0.55-4'
    INSERT @TABLE SELECT 'Y-0.55-4'
    INSERT @TABLE SELECT 'Y-0.55-4'
    SELECT 
    case when PATINDEX('%[(,(]%',NN)>0 then substring(nn,PATINDEX('%-%',NN)+1, PATINDEX('%[(,(]%',NN)-PATINDEX('%-%',NN)-1)
    else substring(nn,PATINDEX('%-%',NN)+1, LEN(nn)-PATINDEX('%-%',NN)) end as nn
    FROM @TABLE/*
    nn
    --------------------
    0.25-4
    0.37-4
    1.5-2
    1.5-2
    1.5-2
    1.5-2
    1.5-2
    1.5-2
    1.5-2
    1.5-2
    1.5-2
    1.5-2
    1.5-2
    0.55-4
    0.55-4
    0.55-4(16 行受影响)
    */
      

  5.   

    PATINDEX('%[(,(]%',NN)  去掉逗号 PATINDEX('%[((]%',NN) 
      

  6.   

    SELECT 
    case when PATINDEX('%[((]%',NN)>0 then rtrim(substring(nn,PATINDEX('%-%',NN)+1, PATINDEX('%[((]%',NN)-PATINDEX('%-%',NN)-1))
    else rtrim(substring(nn,PATINDEX('%-%',NN)+1, LEN(nn)-PATINDEX('%-%',NN))) end as nn
    FROM @TABLE
      

  7.   

    增加两行数据,还有类似以下的数据,怎么处理YEJ2-0.55-4(71机座)(快速整流器)
    Y2-45-4(400V/50HZ)(菱形PEM-SEL)变成
    YEJ2-0.55-4
    Y2-45-4