※部分一致検索ができなくて困っています。
※Apache2.0.52 + MySQL 5.0.51a + PHP5.2.8の環境です。
" sprintf "を使った、下記コードで部分一致検索をするには、どのようにしたらい
いのか、どなたかご教授いただけないでしょうか。
--------------------------------------------------------------------------
$u_address = $_REQUEST['u_address'];// POSTで送られてきた値を受け取り変換。
検索fieldは、"u_address"です。
--------------------------------------------------------------------------
$query = sprintf("SELECT * FROM dive_free_tbl_ WHERE u_address = '%s' ORDER BY serial DESC", $u_address);
※上記のコードだと、"完全一致"にて検索となります。(部分一致の検索にしたい)
下記のコードに変更して、見たのですがエラーにでダメでした。(WHERE以下を抜粋)
WHERE u_address = '%s' ORDER BY serial DESC", LIKE'%$u_address%');
WHERE u_address = '%s' ORDER BY serial DESC", LIKE'[%$u_address]%'');
WHERE u_address = '%s' ORDER BY serial DESC", LIKE'{%$u_address}%'');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'%$u_address%');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'[%$u_address]%'');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'{%$u_address}%'');
" sprintf "を使わず、下記のコードでは問題なく部分一致検索ができます。
--------------------------------------------------------------------------
$sql = "SELECT * FROM dive_free_tbl_ WHERE u_address LIKE'%東%'";
--------------------------------------------------------------------------
何方かご教授いただきたく、よろしくお願いします。
以上
No.2ベストアンサー
- 回答日時:
すみません。
書き方が悪かったです。>query = sprintf("SELECT * FROM dive_free_tbl_ WHERE u_address = '%s' ORDER BY serial DESC", $u_address);
WHERE句の「=」を「LIKE]に変えてください。
「=」は完全一致、「LIKE」は部分一致の検索をします。
この回答への補足
※ご教授いただいたとおり、" = "を" LIKE "に変更した場合、エラー無く検索できました。
本当にありがとう御座います。
1)" = "を" LIKE "に変更。
2)「 $u_address 」を「"%$u_address%"」に変更。
これで、バッチリでした。本当にありがとう御座います。
今後もお世話になることがあるかと思いますが、よろしくお願いします。
本当にありがとう御座いました。
No.1
- 回答日時:
こんにちわ
>$query = sprintf("SELECT * FROM dive_free_tbl_ WHERE u_address = '%s' ORDER BY serial DESC", $u_address);
↑「WHERE u_address = '%s' 」とWHERE句が「=」になっているからではないかと思われます。
この回答への補足
こんちには、回答を頂きありがとう御座います。
指摘いただいた、「=」を取っていろいろとやってみましたが、
「部分一致検索」は、どうにも実現できませんでした。
実行した内容は、質問の文章にも書きましたが、
WHERE u_address '%s' ORDER BY serial DESC", LIKE'%$u_address%');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'[%$u_address]%'');
WHERE u_address '%s' ORDER BY serial DESC", LIKE'{%$u_address}%'');
を実行してみました。(WHERE以降を抜粋)
エラーが表示されて、部分一致検索はできませんでした。
何か、いい方法がありましたらお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
- Visual Basic(VBA) ワークシートチェンジで曜日を表示する方法 1 2023/03/04 21:51
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlで50音順にorder byしたい。
-
LIKEの右側にカラムを指定でき...
-
複数カラムに対するLIKE文の最適化
-
スペースによる絞り込み検索をS...
-
Access & ADOで「'」のLIKE検索
-
whereで全てを検索する方法
-
複数キーワードを複数カラムに...
-
PL/SQLでの文字列比較
-
DBの定義のサイズを大きくし過...
-
INDIRECT関数の代替方法は?
-
UNIONする際、片方テーブルしか...
-
SQLServerでNULLを挿入したいです
-
SELECT文で、指定カラム以外の...
-
MYSQLで全てのカラムから検索す...
-
now()かCURRENT_TIMESTAMPか
-
JDBCドライバがない?
-
type date にnullをinsert
-
GREATESTで NULLをスルーする方...
-
BULK INSERT時のNull許容について
-
Mysql DATE型のDEFAULT値
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
スペースによる絞り込み検索をS...
-
mysqlで50音順にorder byしたい。
-
複数カラムに対するLIKE文の最適化
-
whereで全てを検索する方法
-
LIKE演算子の%について教えて...
-
PL/SQLでの文字列比較
-
End Ifに対応するIfブロックが...
-
Accessで文字列の一部を抽出す...
-
複数キーワードを複数カラムに...
-
SQLで条件の文字列を含んでいる...
-
SQLステータス:37000について
-
MySQLのあいまい検索について
-
SQL文に間違いがありますでしょ...
-
ORDER BY CASEで異なる並替え...
-
SELECT、特定カラムの文字列が...
-
Access & ADOで「'」のLIKE検索
-
複数条件による検索
-
MySQL 配列もどきを条件式に
-
INDIRECT関数の代替方法は?
おすすめ情報