日期:2014-05-17 浏览次数:20641 次
表T:公式换算参数表,固定的只有20个,T02都是字符加上个冒号,
冒号前面最多两个字符,如下面的A1,加冒号是为了作截取标志。
T01[实际值] T02[描述]
----------------------
1 D:dwew
2 E:哈哈
3 A:fk
4 A1:呵呵
...
20 W:总的只有20个
---------------------
现在有一个字符串传入,字符串里规定了只能出现表T中T02字段冒号前面的字符,比如是:
string s1="12+E-D";
string s2="A*5+A1*W";
经和表T比对后把欲得到处理过后的:
s1="12+2-1";即将s1里的E经和表T对比后换成了2,D则换成了1.
s2同理。
如何用存储过程或者是C#代码来实现这一过程。
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
GO
create table [TB]([T01] int,[T02] varchar(14))
insert [TB]
select 1,'D:dwew' union all
select 2,'E:哈哈' union all
select 3,'A:fk' union all
select 4,'A1:呵呵' union all
select 20,'W:总的只有20个'
CREATE PROC p_test(
@input VARCHAR(4000)
)
as
select @input=REPLACE(@input,PARSENAME(REPLACE([T02],':','.'),2),[T01]) from [TB]
SELECT @input
GO
EXEC p_test '12+E-D'
EXEC p_test 'A*5+A1*W'
/*
----------------------------------------------------------------------------------------------------------------
12+2-1
(1 行受影响)
----------------------------------------------------------------------------------------------------------------
3*5+31*20
(1 行受影响)
*/
DROP PROC p_test
drop table [TB]