日期:2014-05-18  浏览次数:20427 次

数据转换疑难
转换某个varchar(max)类型的变量@kk中的字符,
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