単に '='をLIKE演算子に置き換えると、現在のクエリと同じ完全一致の答えが得られます。私はLIKE演算子を使って、何か違うことをしたいと思っています。
SQLデータベースがこれを通常どのように行うのかを説明しましたが、これが機能するかどうかは、HTML5エンジンで使用されているSQLダイアレクトがどのようにSQLと互換性があるかによって異なります。
まず、concaternation構文に依存します。次に、NULL + stringを使用してconcaternationに依存し、NULLまたは文字列を生成します。ほとんどの専門的なデータベースはNULLを返します(これはうまくいくので、これはうまくいくでしょう)。
MySQLやOracleや他のいくつかのデータベース上で動作するはずです以下:
SELECT * FROM bdreminders
WHERE firstname LIKE IFNULL(CONCAT(?,'%'), firstname)
AND lastname LIKE IFNULL(CONCAT(?,'%'), lastname)
AND baughtgift LIKE IFNULL(CONCAT(?,'%'), baughtgift)
ORDER BY firstname asc
または(オラクル、Postgre用など)
SELECT * FROM bdreminders
WHERE firstname LIKE IFNULL(? ||'%', firstname)
AND lastname LIKE IFNULL(? || '%', lastname)
AND baughtgift LIKE IFNULL(? || '%', baughtgift)
ORDER BY firstname asc
または(SQLサーバー用など)
私は最後のものを最初に試してみます。上記がうまく動作せず、すべてのbdremindersを取得した場合、データベースはNULL + stringをNULLにconcatenateしません。この場合、ISNULLは最初の非NULL値を返し、常に '%'を返すので、私はあなたがISNULLを使用できるとは思いません。
使用しているデータベースにタグを付けてください。すべて同じではありません。 –