各位大虾,,,小弟遇到了一个问题,不能解决,请大家帮帮忙。。现在有一个表table ,其中的一个列A ,放的是产品编码,如 A001-A, BA22001-B ,BA002-AB 现在我需要得到的结果是:A001, BA22001, BA002 ,也就是把-和-后面的都去掉,请问怎么样实现呢?

解决方案 »

  1.   

    select substring(A,1,charindex('-',A))
      

  2.   

    select left(A,charindex('-',A)-1) from tabname
      

  3.   

    declare @s varchar(80)
    set @s='A001-A'
    select left(@s,charindex('-',@s)-1)/*
                                                                                     
    -------------------------------------------------------------------------------- 
    A001(所影响的行数为 1 行)*/
      

  4.   

    DECLARE @STR VARCHAR(10)
    SET @STR='A001-A'SELECT LEFT(@STR,CHARINDEX('-', @STR)-1)
      

  5.   


    select replace('A001-A','-','')
      

  6.   

    select  Parsename(replace(A列,'-','.'),2) from tb
      

  7.   

    create table #t(a varchar(20))
    insert into #t select 'A0001-1' union select 'B0002-1' union select 'CA0000203-3'select substring(a,1,charindex('-',a)-1) from #t
      

  8.   

    SELECT LEFT(A,CHARINDEX('-',A)-1) FROM TB
      

  9.   

    ...--失误
    select substring(A,1,charindex('-',A)-1) from tb
      

  10.   

    怎么各位都用substring呢?用replace效率难道不高吗?
      

  11.   

    -- =========================================
    -- -----------t_mac 小编-------------
       ---希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('tb') IS NOT NULL
      DROP TABLE tb
    GO
    CREATE TABLE tb(a varchar(100))
    go
    insert into tb
    select 'A001-A' union all
    select 'BA001-B' union all
    select 'AS001-AB' 
    go
    SELECT tb=substring(a,1,CHARINDEX('-',a)-1)
    from tb
    /*------------
    A001
    BA001
    AS001
    -------*/
      

  12.   

    declare @T table(col nvarchar(20))
    insert @T
    select 'A001-A' union all
    select 'A002-B' union all
    select 'A003-C' union all
    select 'A004-D'select col=left(col,charindex('-',col)-1)
    from @Tcol
    --------------------
    A001
    A002
    A003
    A004(4 行受影响)
      

  13.   

    -- =========================================
    -- -----------t_mac 小编-------------
       ---希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('tb') IS NOT NULL
      DROP TABLE tb
    GO
    CREATE TABLE tb(a varchar(100))
    go
    insert into tb
    select 'A001-A' union all
    select 'BA001-B' union all
    select 'AS001-AB' 
    go
    SELECT tb=REPLACE(a,right(a,len(a)-CHARINDEX('-',a)+1),'')
    from tb
    /*------------
    A001
    BA001
    AS001
    -------*/
      

  14.   

    declare @s varchar(80)
    set @s='A001-A'select left(@s,charindex('-',@s)-1)
      

  15.   

    -- =========================================
    -- -----------t_mac 小编-------------
       ---希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('tb') IS NOT NULL
      DROP TABLE tb
    GO
    CREATE TABLE tb(a varchar(100))
    go
    insert into tb
    select 'A001-A' union all
    select 'BA001-B' union all
    select 'AS001-AB' 
    go
    select col=left(a,charindex('-',a)-1)
    from tb
    /*------------
    A001
    BA001
    AS001
    -------*/
      

  16.   

    declare @s varchar(80)
    set @s='A001-A'
    select substring(@s,1,charindex('-',@s)-1)