例如有如下字段
name
三星电脑红色
海尔电脑黑色A货
索尼电脑灰色B货我想拆分这个字段,分别为
name1       name2
三星电脑    红色
海尔电脑    黑色A货
索尼电脑    灰色B货就是把电脑前面的内容,包括电脑两个字放到name1字段,后面部份放到name2字段

解决方案 »

  1.   

    ---测试数据---
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([name] varchar(15))
    insert [tb]
    select '三星电脑红色' union all
    select '海尔电脑黑色A货' union all
    select '索尼电脑灰色B货'
     
    ---查询---
    select 
      left(name,charindex('电脑',name)+1) as name1,
      right(name,len(name)-charindex('电脑',name)-1) as name2
    from
      tb---结果---
    name1           name2
    --------------- ---------------
    三星电脑            红色
    海尔电脑            黑色A货
    索尼电脑            灰色B货(3 行受影响)
      

  2.   


    --> 测试数据:[TB]
    if object_id('[TB]') is not null drop table [TB]
    create table [TB]([name] varchar(15))
    insert [TB]
    select '三星电脑红色' union all
    select '海尔电脑黑色A货' union all
    select '索尼电脑灰色B货'select * from [TB]SELECT [name1]=LEFT([name],4),[name2]=substring([name],4,LEN([name])) from [TB]
    /*
    name1    name2
    -------- ---------------
    三星电脑     脑红色
    海尔电脑     脑黑色A货
    索尼电脑     脑灰色B货(3 行受影响)*/
      

  3.   

    能不能解释下charindex('电脑',name)+1这里的+1或-1是什么意思
      

  4.   

    charindex('电脑',name) 是查找“电脑”在name中位置,加1是因为电脑是两个字
      

  5.   

    查到电脑第一次到NAME出现的位置,+1,-1是算具体位置的
      

  6.   

    charindex的语法请参考http://msdn.microsoft.com/zh-cn/library/ms186323.aspx
      

  7.   

    楼上的,你好
    怎么你要新建一个tb 表呢?
    而且为什么我直接用下面这语句,发现不行的呢?
    select 
      left(name,charindex('电脑',name)+1) as name1,
      right(name,len(name)-charindex('电脑',name)-1) as name2
    from
      text 
    其中text 是我自己按照发贴人的要求建立的表:
    即:name  varchar  15