【发布时间】:2019-10-02 13:27:05
【问题描述】:
我在现有表中添加了一个新列 (varchar),并希望在该列的每一行中用“P/R”替换空值。
这可以很容易地在 Access 数据库上作为“P/R”AS [column] 完成,但我在 SQL 上找不到等价物。
我尝试了下面的代码并收到了一个对我来说没有意义的错误。有人可以解释原因并提供解决方案吗?
非常感谢,
Alter table [EPG 00) Premium] add [Earning] varchar
Update [EPG 00) Premium]
set [earning] = 'P/R'
where [earning] is null
消息 8152,第 16 级,状态 14,第 1 行
字符串或二进制数据将被截断。
声明已终止。
【问题讨论】:
-
这就是为什么您应该始终声明您的长度、比例和精度。在这种情况下
Alter table [EPG 00) Premium] add [Earning] nvarchar=Alter table [EPG 00) Premium] add [Earning] nvarchar(1)。'P/R'有 3 个字符长,因此对于您的新列来说太大了(2 个字符)。 -
应该是varchar(size),其中size是最大字符数。
-
另外,您真的有一张名为
EPG 00) Premium的表格吗?您确实应该避免使用任何会导致您需要分隔符来标识对象的名称,尤其是括号等特殊字符 (())。 -
嗨拉努,感谢您的帮助!我正在从 Access 数据库传输表和查询,包括奇怪的表名,但会采纳您的建议! :)
标签: sql sql-server sql-server-2012