【发布时间】:2020-08-25 14:28:11
【问题描述】:
我有一个包含很多表和很多列的数据库。大多数列的数据类型为VARCHAR(MAX)。有没有办法让我扫描数据并据此确定哪种数据类型更适合每一列?也许是一个 C# 库?任何其他在这方面做得更好的语言也可以。
【问题讨论】:
-
@KenWhite,我认为 Paul 理解 varchar(MAX) 不适用于许多列,并且正在寻找一种工具来帮助根据现有值确定每列的最合适类型。
-
您应该知道列的逻辑含义。这决定了适当的数据类型,而不是当前值。
-
由于这个问题被否决了,加我的 2 美分。对于已有十年或两年历史的遗留代码,列的意图及其实际用途可能不一致。分析可能有助于更好地理解当前状态(它补充但不能取代对领域的理解)。
-
没有什么开箱即用...您可以使用
CHARINDEX()或PATINDEX()来搜索字符和模式的存在。您可以使用TRY_CAST()、TRY_CONVERT()或TRY_PARSE()来检查某些数据类型。您可以导出到 Excel 并检查导出工具如何使用隐式算法来查找适当的数据类型......并注意文化差异(十进制格式、日期/时间格式等)
标签: c# sql-server tsql sqldatatypes