表格tb
A
|a|b|200|
|a|b|100|200|
|a|b|100|
|a|b|100|200|100|
|a|b|100|200|100|200|
希望能的到
|a|b|2|
|a|b|1|2|
|a|b|1|
|a|b|1|2|1|
|a|b|1|2|1|2|
A
|a|b|200|
|a|b|100|200|
|a|b|100|
|a|b|100|200|100|
|a|b|100|200|100|200|
希望能的到
|a|b|2|
|a|b|1|2|
|a|b|1|
|a|b|1|2|1|
|a|b|1|2|1|2|
如果是这样那
表A
|a|b|2|1|
|a|b|1|2|
|a|b|1|2|
|a|b|1|2|1|
|a|b|1|2|1|2|
的到
|a|b|2b|1a|
|a|b|1a|2b|
|a|b|1a|2b|
|a|b|1a|2b|1a|
|a|b|1a|2b|1a|2b|
那怎么样办啊
比如第一行
以字符‘|’后得到 a b 1 2 四个值 如果 其中的 为1 则变为 1a ,如果是 2 则为 2b ,如果是其他 则不变
其他的没行都是要这样转换
因此得到的结果 是为
|a|b|2b|1a|
|a|b|1a|2b|
|a|b|1a|2b|
|a|b|1a|2b|1a|
|a|b|1a|2b|1a|2b|
a,b是固定的吗?还是说要从|a|b|中取啊?
都是要从 |a|b|中取啊 !!
我的意思是 将没一行 都以‘|’为分割符 分割开来 这样就会得到一个 字符数组
比如 :|a|b|2|1| 分割后就得到 a,b,2,1 然后在一个个字符判断 如果 a='a' 就不变如果为 2就变为2b ,如果为1就变为 1a 然后在组合 得到 ‘|a|b|2b|1a|’ 在更新 这个表 的记录为
|a|b|2|1| 更新为 |a|b|2b|1a|
|a|b|1|2|,|a|b|1a|2b|
|a|b|1|2| |a|b|1a|2b|
|a|b|1|2|1|。。 |a|b|1a|2a|1a|
|a|b|1|2|1|2|。。|a|b|1a|2b|1a|2b|
我这里只是举些简单的列子 实际上 数据还是有很多总情况的!!
说白了 就是类识与 C#里面的 split 函数的功能
分割出来以后在根据一定的条件进行赋值不知道我这样明白了没有
--循环截取法
CREATE FUNCTION f_splitSTR(
@s varchar(8000), --待分拆的字符串
@split varchar(10) --数据分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
DECLARE @splitlen int
SET @splitlen=LEN(@split+'a')-2
WHILE CHARINDEX(@split,@s)>0
BEGIN
INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
END
INSERT @re VALUES(@s)
RETURN
END