请问我有表a 字段color,urm
现有数据
color urm
0 红色,绿色,蓝色|M,S,X
0 白色,蓝色|M,S,X
0 黑色,蓝色|M,S,X
0 红色,黑色,蓝色|M,S,X
0 红色,蓝色|M,S,X如何写一条语句update 语句更改color字段使color=urm的颜色数目
变成
3 红色,绿色,蓝色|M,S,X
2 白色,蓝色|M,S,X
2 黑色,蓝色|M,S,X
3 红色,黑色,蓝色|M,S,X
2 红色,蓝色|M,S,X

解决方案 »

  1.   


    if OBJECT_ID('a','u') is not null drop table a 
    go
    create table a(color int,urm varchar(1000))
    go
    insert into a
    select 0,'红色,绿色,蓝色|M,S,X' union all
    select 0,'白色,蓝色|M,S,X' union all
    select 0,'黑色,蓝色|M,S,X' union all
    select 0,'红色,黑色,蓝色|M,S,X' union all
    select 0,'红色,蓝色|M,S,X'
    --update 语句  根据色 替换为多加一个字符,根据长句加减
    update a set color=LEN(replace(urm,'色','色_'))-LEN(urm)
    select * from a
    /*
    color       urm
    ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    3           红色,绿色,蓝色|M,S,X
    2           白色,蓝色|M,S,X
    2           黑色,蓝色|M,S,X
    3           红色,黑色,蓝色|M,S,X
    2           红色,蓝色|M,S,X(5 row(s) affected)*/
      

  2.   

    不是啊,颜色可能是粉红之类的,没有色字,而尺码也不是固定这几个,可能多个,我想获取urm字段的颜色的数量更新到color字段
      

  3.   


    if OBJECT_ID('a','u') is not null drop table a 
    go
    create table a(color int,urm varchar(1000))
    go
    insert into a
    select 0,'红色,绿色,蓝色|M,S,X' union all
    select 0,'白色,蓝色|M,S,X' union all
    select 0,'黑色,蓝色|M,S,X' union all
    select 0,'红色,黑色,蓝色|M,S,X' union all
    select 0,'红色,蓝色|M,S,X'
    --update 语句先截取'|',然后把截取后的值加上 ','  再用替换和长度加减
    update a set color=len(REPLACE(STUFF(urm,CHARINDEX('|',urm),len(urm),'')+',',',',',_'))-LEN(STUFF(urm,CHARINDEX('|',urm),len(urm),'')+',')
    select * from a
    /*
    color       urm
    ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    3           红色,绿色,蓝色|M,S,X
    2           白色,蓝色|M,S,X
    2           黑色,蓝色|M,S,X
    3           红色,黑色,蓝色|M,S,X
    2           红色,蓝色|M,S,X(5 row(s) affected)*/