
こんばんは。
MYSQLではint型、varchar型、text型、smallint型、tinity型、float型で
データが無いことを表すのはnullでも構わないですよね。
そのときPHPでMYSQLからデータを受け取ってデータが空かどうかを区別するには、
if(!a==null){}のようにnullを使うことになります。
PHPでnullを扱うのはトラブルの元になると参考書に書いてありました。
そういうときは、MYSQLでnullじゃなくて0が一番無難でしょうか。
また、0よりも半角文字や「データ無」のようにするべきですか。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>MYSQLではint型、varchar型、text型、smallint型、tinity型、float型で
>そういうときは、MYSQLでnullじゃなくて0が一番無難でしょうか。
>また、0よりも半角文字や「データ無」のようにするべきですか。
数値型は集計する前提なのでNULLを利用するのが妥当です。
ただしNULL値が多いと想定される場合はテーブル構成を
変えてJOINして使う方が効率的です
文字列型はNULL文字が必ずしも妥当ではないので""で処理した方が
よいかもしれません。
また言語によってとくにPHPなどはデータ比較を柔軟に行うことがあり
NULL、0、""、false、"0"などをあいまいに同値として処理するケースがあります。
NULLをつかうのであれば厳密にデータを比較することをお勧めします
No.1
- 回答日時:
時と場合による。
例えばテストの点数なんかをDBに格納したとしましょう。
この場合0は0点ですが、テストを受けなかった人が0点ではまずいでしょ。
テストを受けなかった人は点数なしに設定しておく必要があるでしょ。
(この場合、nullではなくてテストの点数としてあり得ない-1をデータなしとして扱うなども出来ます。)
またtext型に関してもnullでなくて""の様に空文字を入れておくことが出来ます。(nullと空文字は別物です。)
ちなみに
>if(!a==null){}のようにnullを使うことになります。
これはあまりいただけない比較の方法。
nullの比較はis_null()関数を使いなさい。
それと数値型の比較以外で「==」は使わないこと。(===や対応している関数があるならそれを利用すること)
>データを受け取ってデータが空かどうかを区別するには
空文字とnullは別物。
とこんな感じだけど質問者はDBに手を出す前にPHPの基本を理解していない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csvデータ不要列の削除をbatフ...
-
追加クエリで重複データなしで...
-
pandasでsqlite3にテーブル作成...
-
Excel VBAのユーザーフォームで...
-
【VB】セルが空になるまで処理...
-
JDBCを使ってdate型へのINSERT...
-
エクセルで去年のデータを今年...
-
行と列の入れ替え検索(行は可...
-
SELECT INTOで一度に複数の変数...
-
SQLiteでソートした結果をファ...
-
【SQL】他テーブルに含まれる値...
-
オラクルのUPDATEで複数テーブル
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
テーブル名が可変の場合のクエ...
-
エラーを起こす方法
-
SQLサーバに対するSQL文で抽出...
-
テーブル定義書(Oracle) 【IX】...
-
改行を含んだデータのインポート
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
csvデータ不要列の削除をbatフ...
-
【VB】セルが空になるまで処理...
-
Excel VBAのユーザーフォームで...
-
pandasでsqlite3にテーブル作成...
-
追加クエリで重複データなしで...
-
VBA初心者
-
マクロでファイルを読み込み、...
-
ACCESS VBAでSeekメソッドの処...
-
Accessでパラメーター以外の削...
-
EXCELで外部データの取り込みが...
-
JDBCを使ってdate型へのINSERT...
-
リストボックスとDataGridコン...
-
エクセル 2つの列にある値の完...
-
重複データをなくす
-
Excelについて
-
MySQLでauto_incrementをつかわ...
-
アクセス2003 最適化/修復...
-
ListBoxにAddItemする際、重複...
-
VBAでの行数を揃える方法
-
VBA コードの削除に関する質問...
おすすめ情報