问题标签 [persisted-column]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
982 浏览

sql-server - SQL Server:一个用于全文索引的大型持久计算列

在我看来,这是最简单、最直接的解决方案,但如果我错了,请纠正我。

与其在表的所有单个列上都使用全文索引,不如只生成一个宽计算列并仅针对该列运行全文索引不是更好吗?

在我看来,它摆脱了拥有多个列的所有问题,包括。我无法搜索“x AND y”,因为这与第 1 列中存在“x”和第 2 列中存在“y”的行不匹配。

有什么反对意见吗?

0 投票
2 回答
4960 浏览

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

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

MSDN明确说CASE是确定性的,这里

但是,我收到一个错误:

消息 4936,级别 16,状态 1,第 1 行表“日历”中的计算列“PreviousDate”无法保留,因为该列是不确定的。

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

0 投票
1 回答
130 浏览

sql - 持久列公式中的嵌套逻辑

我是持久列中的公式语法的新手并且遇到问题。

A - 我需要case when (CustomerAccountID IS NULL and MissCustNameMatched=0) OR errLicensingProgMissing=1 OR errLicensingSubMissing=1 then (1) else (0) end

这将无法正确验证。

B - 或者我可以这样做 *

案子

  • 当 [MissCustName] 为真时
    • 当 [CustomerAccountName] 为 NULL 时
      • (1)
    • 别的
      • (0)
    • 结尾
  • 别的
    • (0)
  • 结尾*
0 投票
1 回答
80 浏览

sql - PERSISTED 列可以引用现有的持久字段吗?

持久列是否可以引用另一个持久列,是否有任何规则,例如它们是按顺序计算持久字段还是至少计算其他列引用的字段?

0 投票
2 回答
311 浏览

sql - 如何将持久列格式化为填充整数字符串 [SQL Server 2008]

我将在持久列中使用什么公式,以便可以将下面的两列添加在一起,第一列必须填充为 5 个字符:

  • 身份证 (INT)
  • 引用编号(字符串)

我去了format(ID,"00000") & RefNum,但它不起作用,请问有什么想法吗?

0 投票
2 回答
231 浏览

sql - SQL Server 2008 - 你能索引一个持久的列吗

是否可以索引持久字段?

当尝试将主键更改为持久字段或将主键添加到我已创建持久字段的字段时,我得到以下信息:

无法对表 'tblOpportunityRecords' 中的可为空列定义 PRIMARY KEY 约束。

0 投票
1 回答
39 浏览

sql - 为什么这个 Persisted 字段计算不正确 - [FIELDA]='%BUILD%'

我在 SQL Server 2008 中有一个持久字段。

FIELDA 可以包含 'LARGEBUILDING' 、 'BUILDING' 、 'BUILDING MAJOR'm,因此 BUILDING 可以是字符串中的任何位置。

当 FIELD A 包含“BUILD”时,持久化字段不会生成非“0”值,这是为什么呢?

0 投票
2 回答
74 浏览

sql - 在持久化字段中,如何返回不同表列中列的出现次数

由于第 3 方在 Web 应用程序中输入了记录,因此需要以下内容。

某些列(例如Category)需要验证,包括以下列。我有一个OtherTable包含允许值的表。

我需要确定当前表的列值在不同表的指定列中有多少次出现(即:IF)。如果没有发生,则导致标记错误“1”,如果发生,则不会导致标记错误“0”。

请问我该怎么做?

0 投票
1 回答
360 浏览

sql-server - 将所有计算列更改为持久化

我有以下查询来检查我的数据库的哪些列是计算的而不是持久的

是否有任何简单的查询可以将所有这些列更新为持久化?

0 投票
2 回答
878 浏览

sql - 用户定义函数 (TSQL) 非确定性和计算的持久列

我有一个表,其中的列中有两列类型INT,它们被称为:

我想在此表中添加一个新列,其值将根据 和 的值ExpirationMonth计算 ExpirationYear。所以这个列将是一个计算列。

为此,我创建了一个用户定义的标量函数,它根据 和 的值计算该列的ExpirationMonthExpirationYear。该函数的定义如下:

最初,我尝试添加如下列:

我收到以下错误:

无法保留表“Table_Name”中的计算列“IsExpired”,因为该列是不确定的。

PERSISTED从上述语句中删除了它,然后再次运行它。然后我注意到该列已添加了预期值。

我的问题是,如果可能的话,我怎样才能使这个专栏持久化?

我意识到这个错误的原因是GETDATE函数中IsExpired函数的使用。由于GETDATE不是确定性的,所以IsExpired不是确定性的。

但是,我看不出我们如何使这个函数 ,IsExpired具有确定性,并因此将计算列定义为持久化(如果可能的话)。

你能告诉我这是否可能,如果是的话,我该怎么做。