BEGIN TRANCREATE TABLE TableA ( Code VARCHAR(50), aa INT, bb INT, cc INT, dd INT, ee INT)INSERT INTO TableA SELECT '0001', 15, 10, 12, 11, 48 UNION ALL SELECT '0002', 1, 1, 1, 1, 4 CREATE TABLE TableB ( filed_name VARCHAR(50), names VARCHAR(50) )INSERT INTO TableB SELECT 'aa', '一号' UNION ALL SELECT 'bb', '二号' UNION ALL SELECT 'cc', '三号' UNION ALL SELECT 'dd', '四号' UNION ALL SELECT 'ee', '结果'CREATE TABLE TableC ( filed_name VARCHAR(50), xexpr VARCHAR(50) )INSERT INTO TableC SELECT 'ee', 'ee=aa+bb+cc+dd'CREATE TABLE TableAA ( Code VARCHAR(50), FieldName VARCHAR(50), Value INT )INSERT INTO TableAA SELECT code, FieldName = 'aa', Value = aa FROM TableA UNION ALL SELECT code, FieldName = 'bb', Value = bb FROM TableA UNION ALL SELECT code, FieldName = 'cc', Value = cc FROM TableA UNION ALL SELECT code, FieldName = 'dd', Value = dd FROM TableA UNION ALL SELECT code, FieldName = 'ee', Value = ee FROM TableA GO CREATE FUNCTION ReplaceStr(@xexpr VARCHAR(50), @code VARCHAR(50) = '') RETURNS VARCHAR(50) AS BEGINDECLARE @s VARCHAR(50)SET @s = @xexpr SELECT @s = REPLACE(@s, filed_name, names + ':' + CAST(aa.Value AS VARCHAR(50))) FROM TableB b INNER JOIN TableAA aa ON aa.FieldName = b.filed_name WHERE code = @codeRETURN @sEND GOSELECT dbo.ReplaceStr(xexpr, code) FROM TableA a CROSS JOIN TableC c GO ROLLBACK
(
Code VARCHAR(50),
aa INT,
bb INT,
cc INT,
dd INT,
ee INT)INSERT INTO TableA
SELECT '0001', 15, 10, 12, 11, 48 UNION ALL
SELECT '0002', 1, 1, 1, 1, 4 CREATE TABLE TableB
(
filed_name VARCHAR(50),
names VARCHAR(50)
)INSERT INTO TableB
SELECT 'aa', '一号' UNION ALL
SELECT 'bb', '二号' UNION ALL
SELECT 'cc', '三号' UNION ALL
SELECT 'dd', '四号' UNION ALL
SELECT 'ee', '结果'CREATE TABLE TableC
(
filed_name VARCHAR(50),
xexpr VARCHAR(50)
)INSERT INTO TableC
SELECT 'ee', 'ee=aa+bb+cc+dd'CREATE TABLE TableAA
(
Code VARCHAR(50),
FieldName VARCHAR(50),
Value INT
)INSERT INTO TableAA
SELECT code, FieldName = 'aa', Value = aa FROM TableA UNION ALL
SELECT code, FieldName = 'bb', Value = bb FROM TableA UNION ALL
SELECT code, FieldName = 'cc', Value = cc FROM TableA UNION ALL
SELECT code, FieldName = 'dd', Value = dd FROM TableA UNION ALL
SELECT code, FieldName = 'ee', Value = ee FROM TableA GO
CREATE FUNCTION ReplaceStr(@xexpr VARCHAR(50), @code VARCHAR(50) = '')
RETURNS VARCHAR(50)
AS
BEGINDECLARE @s VARCHAR(50)SET @s = @xexpr
SELECT @s = REPLACE(@s, filed_name, names + ':' + CAST(aa.Value AS VARCHAR(50)))
FROM TableB b
INNER JOIN TableAA aa ON aa.FieldName = b.filed_name
WHERE code = @codeRETURN @sEND
GOSELECT dbo.ReplaceStr(xexpr, code)
FROM TableA a
CROSS JOIN TableC c GO
ROLLBACK