2017-02-02 10 views
0

私はMySQL DBにIPアドレスを格納するフィールドを持つテーブルを持っています。それは数値(int)としてそれを格納します。代わりにstring(char)を使用するように構造体を変更したいと思います。関数を使用してMySQL数値フィールドをcharに変更する

単一のALTER TABLE文でも可能ですか?私がPostgresで見る限り、変換関数をALTER TABLEに指定することは可能ですが、MySQLには同等の機能はありません。古いフィールドを除去することにより、新たなチャー()フィールドを古いものから新しいフィールドが

  • ALTERテーブルINET_NTOA使用
  • 更新を追加することによって

    • ALTER表:

      問題を回避するにはには勿論です

    • 、最終的には古いものと同じ名前に新しいフィールドの名前を変更するには、

    を持っていた。しかし、おそらく簡単な解決策はありますか?

  • +1

    IPアドレスは文字列です。 – Strawberry

    +0

    おそらく、http://stackoverflow.com/questions/7465601/how-will-changing-the-mysql-field-type-from-int-to-varchar-affect-data-previouslの複製があります。 – StefanR

    +0

    @Strawberry - no。 'inet_aton'の結果として格納されます。たとえば、 "10.201.111.4"は180973316として格納されます。 –

    答えて

    1

    単純に列をvarcharに変更することができます。 mysqlは自動的に値を変換します。私はこれをmysql 5.6で確認できます。 これを行う前に、間違いなくバックアップを作成して、小さなテストテーブルでこれを試してください。

    +0

    さて、それは私にとってはうまくいかないでしょう。 IPを1つの番号に変換して保存しています。たとえば、 "10.201.111.4"は180973316として格納されます。これをvarcharに変換すると "180973316"が得られます。しかし、私は "10.201.111.4"が欲しい。 –

    +1

    @MirekOpokaそれでは、2段階のプロセスです。または、変換されたipsのために別の列またはテーブルを作成します。 – Strawberry

    関連する問題