gpt4 book ai didi

sql - UPDATE 多个 WHERE SQL 不起作用

转载 作者:行者123 更新时间:2023-12-03 00:04:51 26 4
gpt4 key购买 nike

我正在尝试运行查询来更新 DATA表在哪里 MAXNVQ不同的话,它会将不同的值更新到 Burnham Grade 列中。

这是我到目前为止的代码:-

UPDATE Data  
SET Data.BurnhamGrade = (CASE WHEN Data.[MAXNVQ] > 3 THEN 'Grade II/III'
WHEN Data.[MAXNVQ] = 3 THEN 'Grade IV'
WHEN Data.[MAXNVQ] < 3 THEN 'Grade IV' END)
WHERE (MAXNVQ > 3) OR
(MAXNVQ = 3) OR
(MAXNVQ < 3)

我收到一条错误消息,提示 SQL 执行错误:

String or binary data would be truncated the statement has been terminated.

就像我在 SQL 中犯了一个错误

最佳答案

也许这应该是一条评论,但这些评论似乎是关于其他主题的。您的查询(或同等查询)是:

UPDATE Data  
SET Data.BurnhamGrade = (CASE WHEN Data.[MAXNVQ] > 3 THEN 'Grade II/III'
WHEN Data.[MAXNVQ] = 3 THEN 'Grade IV'
WHEN Data.[MAXNVQ] < 3 THEN 'Grade IV' END)
WHERE MAXNVQ IS NOT NULL;

如果您收到数据截断错误,则可能是因为分配给 Data.BurnhamGrade 的字符串对于该列而言太长。因此,检查列的长度。

出现这种情况的一个常见原因是变量的长度被遗漏了。因此,如果您的表定义为:

CREATE TABLE data (
. . .
BurnhamData varchar,
. . .
);

这会为列分配一个默认长度,该长度取决于上下文,通常为“1”。没有错误,只是一列比您预期的要短。相反:

CREATE TABLE data (
. . .
BurnhamData varchar(255),
. . .
);

或者,如果此映射始终为真,则将值存储在引用表中并使用JOIN,或者,使用计算列:

ALTER TABLE data
ADD BurnhamGrade AS (CASE WHEN Data.[MAXNVQ] > 3 THEN 'Grade II/III'
WHEN Data.[MAXNVQ] = 3 THEN 'Grade IV'
WHEN Data.[MAXNVQ] < 3 THEN 'Grade IV'
END)

通过这种方法,您不必担心值是否保持最新。每当您查询表并使用列时,它都是正确的。

关于sql - UPDATE 多个 WHERE SQL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31141715/

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