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

2 つのオプション (どちらも SQL ではありません):

  1. すべての電話番号を選択し、選択したプログラミング言語を使用して、不要な文字をプログラムで取り除きます。
  2. 入力をクリーンアップして、データベースに挿入する前に不要な文字をすべて取り除きます

SQL はこれを行う最良の方法ではなく、むしろ SQL + プログラミング

于 2013-03-18T18:59:57.730 に答える
0

実際には、この正確な目的のために意図的に設計された SQL でこれを行う方法があります。

SELECT SUBSTRING(office_phone_number, 1, 3) FROM contact;

もちろん、これは数値がテーブルにどのように格納されているかによって異なります。括弧が存在する場合、開始位置がオフになります。

詳細は次のとおりです 。MySQL 部分文字列関数

于 2014-06-13T05:44:28.983 に答える