MySQL

データベース

久しぶりのMySQLです

今日は、MySQLで久しぶりにはまりました。

 

そもそも、最近は自分でSQLを組む機会が減っていたので、

ほぼ忘れかけています。

 

ということで、

自分用の備忘録として今日やった事をブログに残しておきます。

 

やっていたとことと言えば、

金額(整数部分)と金額(小数部分)のカラムを分けているシステムがあるのですが、

二つの項目を結合して、かつ単位(万円)を付けた項目を作成する事です。

 

例えば「9.2万円」や「5.0万円」みたいな感じです。

 

金額(整数部分)は「price_int」、金額(小数部分)は「price_dec」というカラム名なので、

「price」というカラムを追加して、

そのカラムに結合した値を入れてやることに。

 

で、実行したSQLは
======================================================================
update main_db set price=CONCAT(price_int, ‘.’, price_dec, ‘万円’)
======================================================================
です。

 

ただ、ここで問題が。

 

この金額項目は必須項目ではなく、NULLも禁止にしているので、

「price_dec」や「price_int」に何も値が入っていないレコードありました。

 

なので、

「9.万円」や「5.万円」のようなおかしな値がちらほらと混ざっていました。

 

NULLが入っていればIFNULLが使えるので、
======================================================================
update main_db set price=CONCAT(IFNULL(price_int,0),’.’,IFNULL(price_dec,0),’万円’)
======================================================================
とすれば、

NULLの場合には「0」に置き換えてくれるのですが、

それもかなわず。。。

 

で、仕方ないので、

CASTで無理やりテキスト型を整数型に変換して実行してやることに。
======================================================================
update main_db set price=CONCAT(CAST(price_int as SIGNED), ‘.’, CAST(price_dec as SIGNED ), ‘万円’)
======================================================================

CAST(カラム名 as SIGNED)とすれば、

テキスト項目を数値型に変換してくれるので、

項目が空白の場合には「0」を勝手に入れてくれます。

 

取り敢えず、

こんな無理やりな方法で解決です。

 

本来はPHPで
======================================================================
echo 金額(整数部分) . “.” . 金額(小数部分) . “万円”;
======================================================================
とすれば表示側で解決する話なんですが、

いろいろ訳あってこんな面倒な事をしていました。

関連記事

  1. MySQL

    データベース

    NULLには注意

    MySQLであるカラムの値が「1」以外のレコードを取得した場合、&…

  2. MySQL

    データベース

    MySQL テーブルのカラムの位置を変更

    本日は弊社の社内システムで使用しているデータベース(MySQL)の整理…

  3. MySQL

    データベース

    Error in processing request エラーコード:403 エラーテキスト:For…

    phpMyAdminの画面から不要になったデータベースを削除しようとし…

  4. データベース

    データベース

    PostgreSQLをインストール

    PostgreSQLのインストールを開始案件でPost…

  5. データベース

    PHP

    【phpPgAdmin】データ型に「integer」を指定

    phpPgAdminの管理画面から、データ型に「integer」を…

  6. MySQL

    データベース

    phpMyAdminをインストール

    今日はMTを使って頂いている業者さんから投稿時に画面がフリーズすると連…

最近の記事

  1. PHP
  2. Python
  3. Python
  4. PHP
  5. 宅建
PAGE TOP