質問: ### 前提・実現したいこと MySQL学習1週間の初心者です。 いろいろ調べたのですがうまくいかず、 こちらで初めて質問させていただきます。 練習用データベースにカラムを追加しましたが、 値がNULLなのでそこに任意の整数を入れたいです。 初歩的な質問でお恥ずかしいのですが... 下記コードでうまくいかないため、 原因をお教えいただけますでしょうか。 ### 発生している問題・エラーメッセージ ``` #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(stock, 50) ``` ### 該当のソースコード ``` SELECT name ISNULL (stock, 50) FROM goods_tbl; ``` ### 試したこと タイプミスかと思い、ネットで収拾した別の構文をお借りしてみましたが、エラーが出てしまいうまくいきませんでした... --------コード---------- SELECT ISNULL(stock,0) FROM goods_tbl; --------エラーメッセージ---------- Incorrect parameter count in the call to native function 'ISNULL' ### 補足情報(FW/ツールのバージョンなど) ◆サーバー情報 サーバ: mysql2.star.ne.jp via TCP/IP サーバの種類: MySQL サーバのバージョン: 5.7.16 - MySQL Community Server (GPL) プロトコル バージョン: 10 サーバの文字セット: UTF-8 Unicode (utf8)
回答: 私もcoalesce派なのですでに回答があるとおりなのですが ご質問内容のエラーについて補足です。 isnullはあくまでもチェック用の関数なので条件節で利用します。 ``` select case when isnull(null) then 50 end as nullcheck ``` 命題に最大限合わすならifnullですね ``` select ifnull(null,50) as nullcheck ``` ifnullとcoalesceとの違いは coalesceがnull以外のものが出てくるまで順次引数をチェックすることです。 ``` select coalesce(null,null,null,50,null,100) as nullcheck ``` 複数カラムをチェックして最初にでてきたnull以外のデータを拾ったりするときには便利です。 そしてifnullの機能を包含しているのであえて使い分けずにcoalesceだけ 覚えておけば問題ありません