当前位置: 代码迷 >> Sql Server >> 数据转换疑难解决方案
  详细解决方案

数据转换疑难解决方案

热度:69   发布时间:2016-04-27 15:20:16.0
数据转换疑难
转换某个varchar(max)[email protected]
1.@kk中只含有AB两类字符
2.按顺序转换
3.顺序转换中只会遇到四种情况:A,BA,BBB,BBA(请观察与AAB的关系)
4.遇到A,BA,BBB时转化为1,12,123,继续处理后面字符(不必像【.5】那样特殊处理)。
5.遇到BBA时也转化为123,但是还必须对BBA后面的字符进行特殊处理,规则如下:
BBA+(A或BA或BBB)》》转换为123+(0或00或000)
BBA+N个(1个和1个以上)BBA+(A或BA或BBB)》》转换为123+3N个0+(0或00或000)
-------
例如
ABABBBBBBBBABAABBABBABBBBA
转换为
11212312312300112300000012


------解决方案--------------------
declare @s varchar(1000)
set @s= 'ABABBBBBBBBABAABBABBABBBBA '
set @s=replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(@s, 'BBB ', '123 '), 'BBA ', '444 '), 'BA ', '12 '), 'A ', '1 '), '4123 ', '4000 '), '412 ', '400 '), '41 ', '40 '), '3444 ', '3123 '), '2444 ', '2123 '), '1444 ', '1123 '), '444 ', '000 ')
print @s
  相关解决方案