各位大虾好
有这样一列:备注
            来料不良SPB-AAC-CC
            不良品VCL-TT-KK
            有黑暗点,接触不好CCG-DD-TT-AA
现在想把这列“备注”中的文字和字母分别放到“原因”和“型号”,要怎么写啊,谢谢各位大虾

解决方案 »

  1.   

    select 
    left(备注,patindex('%[A-Z]%',备注)-1) as 原因,
    stuff(备注,1,patindex('%[A-Z]%',备注)-1,'') as 型号
    from tb
      

  2.   

    declare @str nvarchar(100)
    set @str='SPB-AAC-CC'
    select substring(@str,1,charindex('-',@str)-1) '原因',substring(@str,charindex('-',@str)+1,len(@str)-charindex('-',@str))'型号'原因                                                                                                   型号
    ---------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
    SPB                                                                                                  AAC-CC(1 行受影响)
      

  3.   

    create table #WW
    (
     str1 nvarchar(50)
    )
    insert into #WW select 'SPB-AAC-CC'
    insert into #WW select 'VCL-TT-KK'
    insert into #WW select 'CCG-DD-TT-AA'select substring(str1,1,charindex('-',str1)-1) '原因',
           substring(str1,charindex('-',str1)+1,len(str1)-charindex('-',str1))'型号'
    from #WW原因                                                 型号
    -------------------------------------------------- --------------------------------------------------
    SPB                                                AAC-CC
    VCL                                                TT-KK
    CCG                                                DD-TT-AA(3 行受影响)
      

  4.   

    ---测试数据---
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([备注] varchar(29))
    insert [tb]
    select '来料不良SPB-AAC-CC' union all
    select '不良品VCL-TT-KK' union all
    select '有黑暗点,接触不好CCG-DD-TT-AA'
     
    ---查询---
    select 
    left(备注,patindex('%[A-Z]%',备注)-1) as 原因,
    stuff(备注,1,patindex('%[A-Z]%',备注)-1,'') as 型号
    from tb---结果---
    原因                            型号
    ----------------------------- ------------------------------
    来料不良                          SPB-AAC-CC
    不良品                           VCL-TT-KK
    有黑暗点,接触不好                     CCG-DD-TT-AA(3 行受影响)
      

  5.   

    不好意思看错啦create table #WW1
    (
     str1 nvarchar(50)
    )
    insert into #WW1 select '来料不良SPB-AAC-CC'
    insert into #WW1 select '不良品VCL-TT-KK'
    insert into #WW1 select '接触不好CCG-DD-TT-AA'select substring(str1,1,patindex('%[A-Z]%',str1)-1) '原因',
           substring(str1,patindex('%[A-Z]%',str1)+1,len(str1)-patindex('%[A-Z]%',str1))'型号'
    from #WW1原因                                                 型号
    -------------------------------------------------- --------------------------------------------------
    来料不良                                               PB-AAC-CC
    不良品                                                CL-TT-KK
    接触不好                                               CG-DD-TT-AA(3 行受影响)
      

  6.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-03-27 09:27:53
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb]([备注] NVARCHAR(30),[原因] NVARCHAR(30),[型号] NVARCHAR(30))
    INSERT [tb](备注)
    SELECT N'来料不良SPB-AAC-CC' UNION ALL
    SELECT N'不良品VCL-TT-KK' UNION ALL
    SELECT N'有黑暗点,接触不好CCG-DD-TT-AA'
    GO
    --SELECT * FROM [tb]-->SQL查询如下:
    update tb set 原因=LEFT(备注,patindex('%[a-zA-Z]%',备注)-1),型号=RIGHT(备注,len(备注)-patindex('%[a-zA-Z]%',备注)+1)select * from tb
    /*
    备注                             原因                             型号
    ------------------------------ ------------------------------ ------------------------------
    来料不良SPB-AAC-CC                 来料不良                           SPB-AAC-CC
    不良品VCL-TT-KK                   不良品                            VCL-TT-KK
    有黑暗点,接触不好CCG-DD-TT-AA          有黑暗点,接触不好                      CCG-DD-TT-AA(3 行受影响)
    */
      

  7.   

    (⊙o⊙)哦,这样啊~~呵呵 学到了。可是lv4的同学...能不能对齐的好点??
      

  8.   

    create table #WW
    (
     str1 nvarchar(50)
    )
    insert into #WW select '来料不良SPB-AAC-CC'
    insert into #WW select '不良品VCL-TT-KK'
    insert into #WW select '有黑暗点,接触不好CCG-DD-TT-AA'
    go
    select 
    型号=right(str1,len(str1)-PATINDEX('%[a-z]%',str1)+1),
    原因=LEFT(str1,PATINDEX('%[a-z]%',str1)-1)
    from #WW 
    /*
    型号                                                 原因
    -------------------------------------------------- --------------------------------------------------
    SPB-AAC-CC                                         来料不良
    VCL-TT-KK                                          不良品
    CCG-DD-TT-AA                                       有黑暗点,接触不好*/
    drop table #ww