重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

なぜ MySQL の substring は、 1 からなのでしょうか?

perl や php は、 0 からですよね?

A 回答 (2件)

「なぜ」という正確な理由については、MySQLコミュニティあたりで、作った人に聞かないと解らないと思いますけど。


MySQLでは、文字列内の文字位置に関して、統一的に1番開始としてるようです。
http://dev.mysql.com/doc/refman/4.1/ja/string-fu …
以下は、私の推測ですけど
LOCATE(substr,str) などの文字位置を返す関数で、見つからなかったら0なので、位置番号が0開始では具合が悪い
また、0 は真偽判定で、false に判定されちゃうので、見つかったのに、0番として返ると、条件判定上具合が悪からじゃないかな?いちいち+1して判定してといっても、ユーザーとしては使いにくいし、そんなこと忘れるし。
0番開始のプログラム言語では、見つからなかったら負数を返すことが多いけど、真偽判定では、逆にtrueになるのでMySQLのwhere句で使うなら、見つからなかったら負数じゃなく0を返して欲しい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

SQL言語がすでにそのルールのようですね。なぜ、そうなのか明確な答えが見つかりませんでした。きっと探し続ければあると思いますが。

「0番として返ると、条件判定上具合が悪からじゃないかな?」あたりなんでしょうかね。

お礼日時:2010/11/20 10:35

エクセルだってMID("ABC",1,1)は1だし、すべてが0から始まるわけ


別に序数の最初が何になるかはプログラム側の好き嫌いじゃないですか?

この回答への補足

そうですか。

その好き嫌いの理由を探しています。

補足日時:2010/11/20 10:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す