【问题标题】:Entering Phone Number in SQL, losing leading zero在 SQL 中输入电话号码,丢失前导零
【发布时间】:2018-07-15 04:29:06
【问题描述】:

我是SQL新手,需要在表格中输入手机号码,例如0425 198 053。我可以输入数据,但是输入时如何显示?我使用了INTVARCHARCHAR,但是所有具有这些约束的条目在显示时都会将电话号码中的 0 去掉。

我应该使用一个特定的约束吗?这是一个格式问题吗?

编辑添加

这是我一直在使用的表

CREATE TABLE Department
(
    dID INT PRIMARY KEY,
    dName VARCHAR(20) NOT NULL,
    Address VARCHAR(50) NOT NULL,
    Phone VARCHAR(10) NOT NULL UNIQUE,
)

示例数据

dID  dName       Address    Phone
--------------------------------------
1    Sales       CBD        425198053
2    Accounts    Bundoora   429198955
3    Admin       CBD        428198758
4    Marketing   Clayton    427198757 

【问题讨论】:

  • but all entries with those constraints drop the 0 off the phone number ... varchar 列肯定会保留前导零。也许您应该告诉我们您是如何显示这些数据的。
  • 有没有办法让 0 表单掉线?
  • 如果您提供minimal reproducible example,它将帮助人们帮助您。正如该页面上所说,如果您尝试创建一个,您可能会发现自己的问题。我想说这绝对是这里的情况。 VarChar 会很好,但您显然在某处错误地处理了数据。
  • 另外,当您需要在问题中添加重要信息时,请edit问题而不是将其添加到 cmets。我会为你做的,然后你可以删除那些 cmets。
  • 您需要向我们展示该值是如何进入数据库并显示在屏幕上的。我很乐意提供帮助,但您的问题甚至没有标记您正在使用的 SQL 品牌,更不用说发生问题的应用程序的任何详细信息了。

标签: sql


【解决方案1】:

我只是坚持使用 VARCHAR (10)。它仍然提供了一个解决方案,我只是想知道如何让它以零显示。 还是谢谢。

【讨论】:

  • 我们都只是想知道您是如何显示它的......并将数据放在那里。我很好奇为什么你对提供这些信息完全不感兴趣。
  • 同意 Nick 和 Gordon 的观点,我想帮你找到解决这个问题的方法,但是你没有给我们足够的信息。我的猜测是,某处将其视为数字类型之一,而不是字符串类型之一。
【解决方案2】:

one 写于 2008 年,现在仍然适用:

这是否包括:

  • 国际号码?
  • 扩展?
  • 除了实际号码之外的其他信息(如“问鲍比”)?

如果所有这些都不是,我将使用 10 字符字段并删除所有 非数字数据。如果第一个是肯定的,另外两个不是,我会 使用两个 varchar(50) 字段,一个用于原始输入,一个用于 所有非数字数据条带化并用于索引。如果 2 或 3 是肯定的, 我想我会做两个字段和某种疯狂的解析器来确定 什么是扩展或其他数据并适当地处理它。的 当然你可以通过做一些事情来避免第二列 创建索引时去除多余字符的索引 索引,但我只会做第二列,可能会做剥离 带有触发器的字符数。

更新:为了解决 AJAX 问题,它可能没有您想象的那么糟糕。 如果这实际上是对桌子做任何事情的主要方式, 如我所说,仅将数字存储在辅助列中,然后制作 该列的索引是聚集的。

意思,长话短说,在 sql 中保存电话号码的最佳方式是 10 char 字段varchar(50) 字段

您还可以创建一个触发器(如果您要处理触发器),以去除电话号码值中任何不需要的字符。

考虑到触发器在开始处理代码时也会变得混乱,但是,这是您的决定。

【讨论】:

  • “这个是 2008 年写的” - 请你链接源代码吗?
  • 按要求添加:)
  • 谢谢,因为 10 位数字对于我的任何电话号码都不够长,所以我在此处添加了评论;事实上,在该问题的下一个最受好评的答案中提到了这一点。
  • 另外说明,this 答案并未解决 OP 丢失前导零的问题。
  • 没错,它解决了问题的一部分,第二部分可以通过旁注上的触发器来完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
相关资源
最近更新 更多