2

我只想从由电话号码填充的列条目列表中选择区号。这就是我所拥有的:

SELECT LEFT(phone, 3) AS areacode, COUNT(phone) AS count 
FROM registration 
GROUP BY areacode;

问题是,条目不一致。因此,一些电话号码以 +123-456-7899 开头,而另一些则以 (123)-456-7899 开头,而另一些则以没有符号开头。

所以我的问题是:有没有办法可以确保 SELECT LEFT 从第一个整数开始?

谢谢!

4

3 回答 3

2

有些事情是 SQL 不适合的。这是一。我会将电话号码选择成一个字符串,并在您选择的编程语言中进行一些模式匹配以查找区号。

-或者-

更改您的表格,使区号是不同的列。

于 2013-03-18T18:53:06.323 回答
1

两个选项(都不是 SQL):

  1. 选择所有电话号码并使用您选择的编程语言以编程方式去除不必要的字符。
  2. 在将输入插入数据库之前清理输入以去除所有不必要的字符

SQL 不是做到这一点的最佳方式,而是 SQL + 编程

于 2013-03-18T18:59:57.730 回答
0

实际上,在 SQL 中,有一种专门为此目的而设计的方法。

从联系人中选择 SUBSTRING(office_phone_number, 1, 3);

当然,这取决于数字在表中的存储方式。如果存在括号,则您的起始位置将关闭。

以下是更多信息: MySQL 子字符串函数

于 2014-06-13T05:44:28.983 回答