Sql 将列数据类型从十进制(9,0)更改为十进制(15,0)
你能帮我解决这个问题吗(我没有在Teradata文档中找到它,这真的有点让人不知所措):我的表有这个列-禁止十进制(9,0),现在我想把它改为-禁止十进制(15,0)压缩0。-我怎么做?什么是压缩约束0。还是别的什么意思?Sql 将列数据类型从十进制(9,0)更改为十进制(15,0),sql,teradata,Sql,Teradata,你能帮我解决这个问题吗(我没有在Teradata文档中找到它,这真的有点让人不知所措):我的表有这个列-禁止十进制(9,0),现在我想把它改为-禁止十进制(15,0)压缩0。-我怎么做?什么是压缩约束0。还是别的什么意思? 我希望这是可能的,而且我不必创建一个新表,然后从旧表复制数据。该表非常大-当我从该表中计算(*)时,我得到以下错误:2616个数字溢出发生在计算过程中ALTER table的语法图似乎不支持直接更改列的数据类型。(). 压缩0压缩零。Teradata支持多种不同类型的压缩 这
我希望这是可能的,而且我不必创建一个新表,然后从旧表复制数据。该表非常大-当我从该表中计算(*)时,我得到以下错误:2616个数字溢出发生在计算过程中ALTER table的语法图似乎不支持直接更改列的数据类型。(). <代码>压缩0压缩零。Teradata支持多种不同类型的压缩 这里的数字溢出可能意味着您超出了整数的范围。要使该部分正常工作,请尝试转换为更大的数据类型。(执行此操作不需要更改列的数据类型。)
ALTERTABLE的语法图似乎不支持直接更改列的数据类型。(). <代码>压缩0压缩零。Teradata支持多种不同类型的压缩 这里的数字溢出可能意味着您超出了整数的范围。要使该部分正常工作,请尝试转换为更大的数据类型。(执行此操作不需要更改列的数据类型。)
不能使用
ALTER TABLE
将数据类型从DECIMAL(9,0)
更改为DECIMAL(15,0)
,因为它跨越了存储表中值所需的字节边界。对于Teradata 13.10,请参阅Teradata手册SQL数据定义语言详细主题第61-65页,了解有关使用ALTER TABLE
更改列数据类型的更多详细信息。您不能使用ALTER TABLE
将数据类型从DECIMAL(9,0)
更改为DECIMAL(15,0)
因为它跨越了在表中存储值所需的字节边界。对于Teradata 13.10,请参阅Teradata手册SQL数据定义语言详细主题第61-65页,了解有关使用ALTER TABLE
更改列数据类型的更多详细信息。您提出了三个不同的问题:
DECIMAL(9,0)
更改为DECIMAL(15,0)
。最好的方法是创建一个新列(new_BAN),从旧列中赋值,删除旧列,并将new_BAN重新命名为BAN)压缩0
不是约束条件。这意味着从表中压缩“零”的值,从而节省磁盘空间计数(*)
正在返回该错误,因为该表的行数超过2147483647行(整数的最大值)。将结果强制转换为BIGINT(如Catcall所示)我也同意,这些文档可能会非常多。但是要有耐心,只关注您的确切版本的SQL标题。它们确实写得很好。你问了三个不同的问题:
DECIMAL(9,0)
更改为DECIMAL(15,0)
。最好的方法是创建一个新列(new_BAN),从旧列中赋值,删除旧列,并将new_BAN重新命名为BAN)压缩0
不是约束条件。这意味着从表中压缩“零”的值,从而节省磁盘空间计数(*)
正在返回该错误,因为该表的行数超过2147483647行(整数的最大值)。将结果强制转换为BIGINT(如Catcall所示)我也同意,这些文档可能会非常多。但是要有耐心,只关注您的确切版本的SQL标题。它们确实写得很好。所以基本上,您建议创建新表,并将数据从现有表传送到新创建的表中?没有其他方法了?您可以添加一个新列而不是一个新表,复制数据,删除旧列,然后重命名新列。(语法在DDL文档中。)我想我在Teradata用户论坛上看到过这样的讨论,即创建一个新表通常更快。所以基本上,您建议创建一个新表,并将现有表中的数据传输到新创建的表中?没有其他方法了?您可以添加一个新列而不是一个新表,复制数据,删除旧列,然后重命名新列。(语法在DDL文档中。)我想我已经在Teradata用户论坛上看到过讨论,他们说创建新表通常更快。嗨,鲍勃!谢谢你的回复。我喜欢关于添加一个新列并在该新列中复制数据的建议。我想知道的是,是否可以保持相同的列顺序,即我可以将新列放在旧列所在的位置,还是该列只能放在表的末尾?嗨,鲍勃!谢谢你的回复。我喜欢关于添加一个新列并在该新列中复制数据的建议。我想知道的是,是否可以保持相同的列顺序,即我可以将新列放在旧列所在的位置,还是该列只能放在表的末尾?
select cast(count(*) as bigint)
from table_name;