Help us understand the problem. What is going on with this article?

【FileMaker】電話番号の最初の0(ゼロ)を取得したい

「電話番号の数字を取得したいんです。
でも、最初の0(ゼロ)がGetAsNumberだと取得できないんです。」

ウンウン、そうだね、取得できないね。

「え、だって、数字を取得するのって、GetAsNumberだから、これでいいんですよね?」

え、だって、数字で最初の0って認識されないっしょ。

「あー、、、、なんで?」

え、(会話がループ)

FileMaker業界にかかわらず、システム業界に来たばかりの新人さんと会話するとこんな会話に遭遇することが何回かありました。

結論から言うと、2つのポイントがあります。

最初から結論

1.電話番号や会員番号など、はじめに"0"をつけたデータが存在する使用の場合は、テキストタイプのフィールドにしましょう
2.最初のゼロを含んだ数字は、テキストとして処理しましょう

サンプルで現象を確認してみる

「つまりは、数字があるテキストなんだよ」
と言う極論なんですが、下のサンプルを見ていきましょう。

このサンプルでは、テキストと数字タイプの二つのフィールドを設置しました。
スクリーンショット 2020-07-06 14.21.47.png

GetAsNumberで数字を取り出した場合

テキストフィールドの電話番号を、GetAsNumberで数字を取得する計算式を計算フィールドに設定しました。
この時、忘れがちですが、「計算結果」も得たい結果に合わせることを忘れないでください。
スクリーンショット 2020-07-06 14.22.12.png

次に、数字フィールドの電話番号を、GetAsNumberで数字を取得する計算式を計算フィールドに設定してみます。
この計算フィールドの計算結果は「数字」に設定します。
スクリーンショット 2020-07-06 14.22.27.png

レイアウトでは、数字フィールドの表示もコントロールしておきます。
何も設定しない「一般」だと、指数で表示されます。
スクリーンショット 2020-07-06 14.39.10.png

さて、結果です。
見事に、最初の"0"が抜かれてますね。
スクリーンショット 2020-07-06 14.38.41.png
きっと相談しに来た新人さんも、こういう現象のことを言いたかったんでしょう。

こうすると"0"が取得できるよ

色々とやり方はあると思いますが、オーソドックスな方法を二つ紹介します。

やり方1:固定の文字を削除する

もし、会員番号や電話番号のように数字以外の文字が固定されている場合(例:"-")は、Substitute関数で数字以外の固定の文字を削除するやり方があります。
この時も、計算結果をテキストにするのを忘れずに。
スクリーンショット 2020-07-06 14.46.30.png

やり方2:数字だけを取り出す

数字以外の文字が複数ある場合は、やり方1とは逆の発想で、Filter関数で数字だけを取り出します。
この時も、計算結果をテキストにするのを忘れずに。
スクリーンショット 2020-07-06 14.46.41.png

結果、、、

これらのやり方で実装すると、きちんと"0"が最初についたデータを抽出できていますね。
スクリーンショット 2020-07-06 14.47.25.png

FileMakerに限らず、プログラミング言語を使った開発は、どれだけ手(この場合は関数)を知っているかがつまづかない実装の一つです。
インプットはたっぷりし、そのたっぷり入ったインプットがどこで使われると効果的なのかをたくさんアウトプットして覚えていってくださいね。(自分含め。。。)

tyuma
個人事業主として、様々な言語や現場を経験し、FileMakerの仕事をしています。 汎用機からイマドキまでこなしてきていますが、もう体力的にJavaは打ち止めにしたいです。。。 現在はFileMakerで小回りの効くシステム開発をメインにお仕事を受注しています。
https://www.youtube.com/channel/UC98aghnO5siL91xf6_24R5Q
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away