5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

「電話番号の数字を取得したいんです。
でも、最初の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に限らず、プログラミング言語を使った開発は、どれだけ手(この場合は関数)を知っているかがつまづかない実装の一つです。
インプットはたっぷりし、そのたっぷり入ったインプットがどこで使われると効果的なのかをたくさんアウトプットして覚えていってくださいね。(自分含め。。。)

5
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?