SQL Server Express 2014 中转换列数据类型时有哪些做法?
What are the practices when converting column data type in SQL Server Express 2014?
我最近在 SQL Server Express 中达到了 10GB 的数据库限制,我希望删除不必要的列,并将其他列转换为不太重的数据类型。我有 29 列,只有不到 5000 万行。那29个中有20个是float,其中只有10个对我很有用。我可以完全删除 10 个浮动列,但仍然拥有我需要的所有信息。在剩下的 6 列中,2 列是 bit,2 列是 int(复合键需要),5 列是 int 但可能是 tinyint。
我如何确保在将这 5 列的数据类型更改为 tinyint 之前,它们会正确转换? SSMS 警告在从设计中执行此操作时可能会丢失数据,因此我想在继续之前确保一切正常,然后 运行 Alter Table 语句。
是不是很简单:
SELECT [ExperimentID],[CycleCount] --My compound key
FROM [dbo].[Simulations]
WHERE (parameter1 < 0 OR parameter1 > 255) OR (parameter2 < 0 OR parameter2 > 255) OR (other search conditions)
或者是否有更好的方法来验证这些东西?
此外,抱歉数据库没有正确规范化,同事建议我不要规范化以帮助以后的数据分析。
无论您想在何处更改列的类型,您都可以 CAST-Select 它以确保一切正常:
SELECT CAST(Column_Name as tinyint), *
FROM [dbo].[Simulations]
如果有 int 值,它将引发异常。
如果您尝试缩短字符串(例如将 varchar(1000) 更改为 varchar(100)),将会出现数据将被截断的消息。
我最近在 SQL Server Express 中达到了 10GB 的数据库限制,我希望删除不必要的列,并将其他列转换为不太重的数据类型。我有 29 列,只有不到 5000 万行。那29个中有20个是float,其中只有10个对我很有用。我可以完全删除 10 个浮动列,但仍然拥有我需要的所有信息。在剩下的 6 列中,2 列是 bit,2 列是 int(复合键需要),5 列是 int 但可能是 tinyint。
我如何确保在将这 5 列的数据类型更改为 tinyint 之前,它们会正确转换? SSMS 警告在从设计中执行此操作时可能会丢失数据,因此我想在继续之前确保一切正常,然后 运行 Alter Table 语句。
是不是很简单:
SELECT [ExperimentID],[CycleCount] --My compound key
FROM [dbo].[Simulations]
WHERE (parameter1 < 0 OR parameter1 > 255) OR (parameter2 < 0 OR parameter2 > 255) OR (other search conditions)
或者是否有更好的方法来验证这些东西?
此外,抱歉数据库没有正确规范化,同事建议我不要规范化以帮助以后的数据分析。
无论您想在何处更改列的类型,您都可以 CAST-Select 它以确保一切正常:
SELECT CAST(Column_Name as tinyint), *
FROM [dbo].[Simulations]
如果有 int 值,它将引发异常。
如果您尝试缩短字符串(例如将 varchar(1000) 更改为 varchar(100)),将会出现数据将被截断的消息。