巴扎黑2017-04-18 10:46:56
選択
リーリーから
リーリーどこで
リーリーそして concat のような名前(
リーリー名前のトラブルシューティングを書きました。他のものはご自身で確認してください。最善の解決策ではない可能性があります
大家讲道理2017-04-18 10:46:56
データベース フレームワークが使用されているかどうかはわかりません。使用されている場合は、通常、対応するソリューションがあります。
たとえば、mybatis では、iftest を使用して like ステートメントを実行する必要があるかどうかを判断できます。
もう 1 つの方法は、IF(expr1,expr2,expr3) や IF ELSE などのデータベース自体の関数を使用することです
天蓬老师2017-04-18 10:46:56
フロントエンドに入力パラメータがない場合、なぜこのフィールドの結果をクエリする必要があるのでしょうか?これはビジネスロジックに違反していませんか?
天蓬老师2017-04-18 10:46:56
where IFNULL(name, '') like '%xx%' および IFNULL(method, '') like '%xx%'
name
が < の場合code>null空の文字列
に変換すると、%%
が一致します。 where IFNULL(name, '') like'%xx%' and IFNULL(method, '') like '%xx%'
如果name
为null
将其转换为empty string
那%%
就能匹配上了。
不过我认为最好的做法还是使用SQL
的地方增加逻辑判断会比较好一些,改动量应该非常少,只需要几句代码就搞定了。题主可以看看@家常菜 的SQL增加一个where 1=1
的条件,那if
<時間>
SQL
を使用して論理的な判断を追加するのが最善の方法だと思います。変更の量は非常に少なく、数行のコードのみで完了します。質問者は @家客菜 の SQL を見て where 1=1
条件を追加すると、< に条件を追加するのが非常に簡単になります。 code>if 条件。 🎜ringa_lee2017-04-18 10:46:56
簡単な方法は、テーブル内のnull値を「」に変換することですwhere ifnull(name,'') like'%%' and ifnull(method,'') like '%%'
効率を考えなければこれで十分です
PHP中文网2017-04-18 10:46:56
質問者は、インターフェイス上のクエリ条件を SQL ステートメントの Where 条件に単純に接続したいと考えています。これは確かにプログラム処理にとって非常に便利ですが、セキュリティ上の理由から、これは行わない方がよいでしょう。 SQLインジェクション。
内部アプリケーションの場合、この環境は確かに非常に安全です。パフォーマンスを考慮すると、このパラメーターを使用せずに、対応する where 句をスプライスしないでください。 Java では次のように記述できます:
リーリー*以下は仮定です:
nameStrとmethodStrはそれぞれインターフェースから取得したユーザー入力内容です。ユーザーが入力しない場合、結果はnull
xxxxxx は他の where 条件です。実際に他に条件がない場合は、「where」文字列自体を処理する必要があります*