gpt4 book ai didi

sql - 为什么我的 CASE 表达式是不确定的?

转载 作者:行者123 更新时间:2023-12-02 17:07:15 25 4
gpt4 key购买 nike

我正在尝试使用 CASE 表达式创建持久计算列:

ALTER TABLE dbo.Calendar ADD PreviousDate AS 
case WHEN [Date]>'20100101' THEN [Date]
ELSE NULL
END PERSISTED

MSDN明确表示CASE是确定性的,here

但是,我收到错误:

Msg 4936, Level 16, State 1, Line 1 Computed column 'PreviousDate' in table 'Calendar' cannot be persisted because the column is non-deterministic.

当然,我可以创建一个标量 UDF 并将其显式声明为确定性的,但是有没有更简单的方法来解决这个问题?我已经在获取最新的服务包了。谢谢。

最佳答案

您需要CONVERT '20100101' with a style.

Source or target type is datetime or smalldatetime, the other source or target type is a character string, and a nondeterministic style is specified.

所以,试试这个:

...WHEN [Date] > CONVERT(datetime, '20100101', 112)....

从字符串解析日期可能不可靠,如 I've answered before (mostly in comments)

编辑:

我不会说这是一个错误,但 SQL Server 要求 100% 澄清。 yyyymmdd 不是 ISO,SQL Server 解析 yyyy-mm-dd 不可靠(请参阅我的答案链接)

关于sql - 为什么我的 CASE 表达式是不确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3596663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com