【问题标题】:Add specific hardcoded values to some rows in a computed column将特定的硬编码值添加到计算列中的某些行
【发布时间】:2016-09-30 07:45:22
【问题描述】:

是否有可能更改计算列的某些值?我们需要它,因为这些值连接到另一个系统,其中三个必须更改。

我们的计算列如下所示:

('Product-'+CONVERT([NVARCHAR](100),(1000)+[Id],(0)))

我现在必须将值 Product-1356Product-1655Product-1701 更改为 Product-12Product-17Product-18(示例值)。这三个必须是硬编码的。其余的必须像以前一样计算。

我已经尝试使用 T-SQL 正常更新它:

UPDATE MyTable
SET ProductId = 'Product-12'
WHERE ProductId = 'Product-1356'

但现在我收到以下错误:

无法修改列“ProductId”,因为它是计算列或者是 UNION 运算符的结果。

更新Id 列也不起作用,因为它是主键:

无法更新身份列“Id”。

我该怎么做?有可能吗?

【问题讨论】:

    标签: sql-server tsql sql-server-2014 calculated-columns


    【解决方案1】:

    我能想到的两个选项:

    1. 删除这些行并使用正确的 ID 重新添加它们。
    2. 设置 ProductIdOverride 的新列并将所有硬编码的 ID 放入其中。当您希望使用现有公式时,请保留 Null。然后将您的计算列更改为COALESCE(ProductIdOverride, ('Product-'+CONVERT([NVARCHAR](100),(1000)+[Id],(0))))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多