私はこれをデバッグする手順を説明するつもりですので、あなた自身で事のこのタイプをデバッグすることができることが、将来の可能性が高くなります。
http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_concatは言う:いずれかの引数がNULLである場合
CONCAT()
はNULLを返します。
これを常に心がけてください。 CONCAT()
のいずれかの引数がNULLの場合、返される文字列全体はNULLです。したがって、sqlWhere
がNULLになると、CONCAT()
の引数の1つがおそらくNULLになります。
CONCAT()
にあなたの呼び出しの引数は、次のとおりです。以前のコードから
sqlWhere
。これはNULLではないことをテストしました。
IF(sqlWhere = '', '', ' AND ')
これはかなり単純です。文字列定数を返すことができるだけなので、NULLにすることはできません。
SQL_WHERE_DATE_POSE_PREVUE_SUP
なるほど。今どこかに行ってきます。その最後の変数はNULLである可能性が最も高い原因です。その変数の値はどのように設定されていますか?
SET SQL_WHERE_DATE_POSE_PREVUE_SUP = replace(
SQL_WHERE_DATE_POSE_PREVUE_SUP,
':datePosePrevueSup',
DATE_FORMAT(datePosePrevueSup, FORMAT_DATE)
) ;
REPLACE()
は、引数がNULLの場合はNULLも返すことに注意してください。ドキュメントには、このことを言及していないが、我々はいくつかのアドホックテストでそれを確認することができます
mysql> select replace('foo bar baz', 'foo', null);
+-------------------------------------+
| replace('foo bar baz', 'foo', null) |
+-------------------------------------+
| NULL |
+-------------------------------------+
1 row in set (0.01 sec)
mysql> select replace(null, 'foo', 'FOO');
+-----------------------------+
| replace(null, 'foo', 'FOO') |
+-----------------------------+
| NULL |
+-----------------------------+
1 row in set (0.00 sec)
mysql> select replace('foo bar baz', NULL, 'FOO');
+-------------------------------------+
| replace('foo bar baz', NULL, 'FOO') |
+-------------------------------------+
| NULL |
+-------------------------------------+
だから今、私たちはこれが可能である知っていることを、引数のおそらく1あなたREPLACE()
式にNULLです。議論は何ですか?
SQL_WHERE_DATE_POSE_PREVUE_SUP
これはテストしましたか?
':datePosePrevueSup'
はNULLではない文字列リテラルです。
DATE_FORMAT(datePosePrevueSup, FORMAT_DATE)
はNULLを返すことがあります。あなたは両方の変数をテストしましたか?
私たちは、そのいずれかの引数がNULLである場合DATE_FORMAT()
もNULLを返すことを確認することができます
mysql> select date_format('2016-12-18', NULL);
+---------------------------------+
| date_format('2016-12-18', NULL) |
+---------------------------------+
| NULL |
+---------------------------------+
mysql> select date_format(null, '%x, %v');
+-----------------------------+
| date_format(null, '%x, %v') |
+-----------------------------+
| NULL |
+-----------------------------+
うまくいけば、これはあなたの将来に自分でこの問題をデバッグするためのいくつかのテクニックを示しています。
auto_inc – Drew
のテーブルを挿入すると、デバッグが容易になります。連結の値を出力します.1つはnullになります –