在专栏中我有一个表达式 我想评估这个表达式 示例 - 我有一个包含列 COLA、COLB、COLC 的表 现在假设我有一行,COLA = 5,COLB = 10,COLC = 'COLA + 2*COLB' 我应该能够编写一个视图来计算 COLC 的值 在本例中它将是 25,但如果我更改 COLA 和 COLB 的值,派生列的值必须在视图中相应更改
这是 CHATGPT 的建议,但我认为那是不对的。请帮忙
CREATE TABLE YourTable (
COLA INT,
COLB INT,
COLC_EXPRESSION NVARCHAR(MAX)
);
INSERT INTO YourTable (COLA, COLB, COLC_EXPRESSION)
VALUES (5, 10, 'COLA + 2*COLB');
-- 使用动态 SQL 创建视图来计算表达式
CREATE VIEW ComputedValues AS
SELECT
COLA,
COLB,
COLC_EXPRESSION AS Expression,
CASE
WHEN COLC_EXPRESSION IS NOT NULL THEN
CAST(
(
SELECT COLA + 2 * COLB -- Replace with your actual expression evaluation logic
FROM YourTable
WHERE t.COLA = YourTable.COLA AND t.COLB = YourTable.COLB
) AS NVARCHAR(MAX)
)
ELSE
NULL
END AS COLC
FROM YourTable t;
在这种情况下你可以添加虚拟列-
ALTER TABLE tb1
ADD (COLC INT GENERATED ALWAYS AS (COLA + 2*COLB) VIRTUAL);