gpt4 book ai didi

SQL - 带前导零的数字数据类型

转载 作者:行者123 更新时间:2023-12-02 05:44:42 25 4
gpt4 key购买 nike

我需要存储 Medicare APC codes.我相信格式需要 4 个数字。前导零是相关的。有什么方法可以存储这种带验证的数据类型吗?我应该如何存储这些数据 (varchar(4), int)?

最佳答案

这种问题,存储需要在某些场景(即排序)中被视为数字值而在其他场景(即地址)中被视为文本值的零前导数字总是很痛苦,并且没有一个最好的答案对于所有用户。在我的公司,我们有一个数据库,将数字存储为代码文本(不是 Medicare APC 代码),我们必须用零填充它们,以便它们在订单操作中使用时能够正确排序。

不要为此使用数字数据类型,因为该项目不是真实数字,而是使用数字字符的文本数据。您不会对代码执行任何计算或聚合,因此将它们存储为数字的唯一好处是确保代码的正确排序,并且可以通过在需要的地方用零填充代码来完成存储为文本的代码.如果您使用数字数据类型,那么任何时候代码与其他文本值组合时,您都必须将其显式转换为 CHAR/VARCHAR 或让 SQL Server 执行此操作,因为应始终避免隐式转换,这意味着大量额外工作您和查询处理器在任何时候使用代码。

假设您决定使用文本数据类型,那么问题是您应该使用 VARCHAR 还是 CHAR,虽然许多发帖的人都说 VARCHAR,但我建议您将 CHAR 的长度设置为 4。为什么?

VARCHAR 数据类型适用于大小(长度或字符数)事先未知的文本数据。对于这个 Medicare 代码,我们知道长度将始终至少为 4,并且在可预见的 future 可能不会超过 4。 SQL Server 以不同方式处理 CHAR 和 VARCHAR 之间的数据存储。 SQL Server 的 BOL(联机丛书)说:

列数据条目大小一致时使用CHAR

当列数据的大小变化很大时使用 VARCHAR。

我不能肯定地说这对 SQL Server 2008 及更高版本来说是正确的,但对于早期版本,使用 VARCHAR 数据类型会带来额外的开销,在具有VARCHAR 数据类型。如果存储的数据总是相同的大小,并且在您的场景中听起来是这样,那么这个额外的字节就是一种浪费。

最后看你喜欢CHAR还是VARCHAR,但绝对不要用数字数据类型来存储定长码。

关于SQL - 带前导零的数字数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com