当前位置: 首页 > 面试题库 >

更改列类型而不会丢失数据

严安志
2023-03-14
问题内容

我正在使用SQL数据库,我有一列名为“价格”。创建数据库后,将“价格”列设置为“NVARCHAR我”,需要将其类型更改为decimal(18, 2)不丢失数据库中的数据。这应该通过SQL脚本来完成

我想到了创建一个新列,将数据移到其中,删除旧列,然后重命名新创建的列。

有人可以帮我举个例子吗?在SQL中也有一个函数可以将字符串解析为十进制?

谢谢


问题答案:

您无需添加新列两次,只需在更新新列后删除旧列即可:

ALTER TABLE table_name ADD new_column_name decimal(18,2)

update table_name
set new_column_name = convert(decimal(18,2), old_column_name)

ALTER TABLE table_name DROP COLUMN old_column_name

请注意,如果old_column_name不是数字值,则convert可能会失败。



 类似资料:
  • 问题内容: 我有以下数据框: 我想根据预期的输出更改列的顺序: 我对行的索引不感兴趣。 我已经尝试过以下基于其他stackoverflow / google帖子的代码: 这样可以正确地更改索引,但是其他所有列都可以获取值 我也尝试过: 这样可以正确更改索引,但其他列不会切换,因此会弄乱数据框。 也: 但这无济于事。 我该如何工作? 问题答案: 对于需要创建索引列: 或使用有序分类:

  • 我安装了一个HBase,其中有一组现有表,其中有一组数据(我不想删除)。最近,我偶然发现使用Apache Phoenix可以使用类似SQL的语法查询HBase数据,到目前为止,这非常棒。然而,由于我仍然不完全熟悉各种数据类型以及它们如何映射到我存储在HBase中的Java类型,有时我会弄错。如果我有一个存储为的HBase列 我不小心将我的Phoenix列创建为varchar,我现在如何在不丢失所有

  • 我有一个类似Scala的列名列表 我也有一个包含这些列的数据框架,但都是字符串。现在我想通过遍历数据帧的列表或列来转换数据帧的列,因为我的列列表非常大,我不能使用这么多参数 提前感谢

  • 问题内容: 我的一个实体拥有一个名为的属性。JPA 2-Hibernate会为我生成模式,在我的情况下,RDBMS是MySQL。 被创建为一列,这是正确的。 用户开始创建记录,并且所有记录都能完美运行,但是随后一些用户收到了臭名昭著的错误。 该字段没有足够的空间容纳用户的机器记录!好,没问题 让我们更改架构! 因此,我打开实体类并将属性更改为: 顺便说一句,我声明: 重新启动应用程序后,我很高兴H

  • 我试图以CSV格式保存py spark . SQL . data frame . data frame(也可以是其他格式,只要它易于阅读)。 到目前为止,我找到了几个示例来保存DataFrame。然而,每次我编写它时,它都会丢失信息。 数据集示例: 为了将这个文件保存为CSV,我首先尝试了这个解决方案: 不幸是,这导致了以下错误: 这就是我尝试另一种可能性的原因,将spark数据帧转换成panda

  • 问题内容: 我们需要将某些列的数据类型从int更改为bigint。不幸的是,其中一些表很大,大约有7-10百万行(但不宽)。 Alter表alter列将永远保留在这些表上。有没有更快的方法来实现这一目标? 问题答案: 巧合的是,大约3个小时前,我不得不做一些非常相似的事情。该表是3500万行,它相当宽,并且花了很多时间才能做到这一点: 这就是我最终得到的结果: 这次,这些陈述几乎是即时的。(在速度