• 締切済み

replaceした上でwhere

イメージ的にはこのような感じです。 SELECT * from table where REPLACE(name,'★','') like %佐藤%; 例えばnameが★佐★藤★というレコードがあった場合、like %佐藤%ではヒットしませんが、★を消去して検索すればヒットします。 ★を消去して佐藤が含まれる文字列を検索したいのですが、どのようなsql文にすればよいのでしょうか? ご教示いただけると幸いです。 宜しくお願い致します。

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

文字列「%佐藤%」には両端に引用符を付けて下さい。 SELECT * from `table` where REPLACE(name,'★','') like '%佐藤%' です。

関連するQ&A

  • 大文字小文字を識別しない検索方法について

    DBに例えば、nameフィールドに"SUzuKI"と登録されていたとします。 この場合に、SQLで、"select * from table where name LIKE '%uzuki%';"と検索してもヒットしません。大文字小文字を判別するからです。大文字小文字を判別しない検索方法についてお分かりになる方がいらっしゃいましたら、ご教示をお願いいたします。 よろしくお願いいたします。

  • ワイルドカードの検索

    項目に'%'が入力されているデータを抽出したいのですが、 以下のようなSQLだとデータがすべて抽出されていまいます。  SELECT *   FROM t_table  WHERE code_name LIKE '%%%' '%'を検索するにはどうのようにすればいいのでしょうか?

  • WHEREでヌルをスルーしたい

    いつもお世話になっております。 SQL文のワイルドカードについての質問なのですが、 SELECT 項目1 FROM 表 WHERE 項目1 LIKE '%' というSQLがあったとして、私は項目1のレコードがすべて返されるのかと思いました。 しかしこれだと項目1フィールドにNULLが入っている(何もデータが入っていない)場合、それは除かれてしまうようです。 NULLのレコードも含めてクエリを返してくれるような条件はあるのでしょうか?

  • MySQL WHERE句のLIKE検索

    初心者ですみません。 MySQL WHERE句のLIKE検索で、引っかかった文字列を 除いた項目を表示させるにはどうしたらいいでしょうか。 例えば、 SELECT * from [テーブル名] where [フィールド名] like '%あ%'; として、「あ」が入っているレコードを検索し、 該当しないレコードを表示させる。 どうか教えてください。よろしくお願いします。

  • MySQLでWHERE条件が効かない

    環境: PHP 5.0.3 MySQL 4.0.14b(Win)(←古いこと承知) IIS 5.1 『いますぐ導入!PHP+MySQLで作る最速Webシステム』という入門本のサンプル プログラムを使って勉強していますが、SQLのWHERE文が効かず全レコードが 出てきてしまいます(同書は PHP 4.3.1 を前提に書かれます) 単純に、書籍のISBN、タイトル、価格などが収められたサンプルデータベースで、 こういう↓ search_form.htm から sample.php にPOSTしてます。 書籍タイトル<INPUT size="44" type="text" name="title" maxlength="100"> を含む sample.php は、上記などに入力された検索文字列でWHERE条件で絞込みます。 一部抜粋しますと: | //SQL文を組み立てます(フォームの値をWhereに指定) | $sql = "select * from bookinfo | where (isbn like '$isbn%') and | (title like '%$title%')"; | //priceは指定されているときだけSQL文に追加 | if (strlen($price) > 0) { | $sql .= " and (price <= $price)"; | } | $sql .= " order by isbn"; | | //SQL文の確認用(デバッグ時のみ使用します) | print $sql; どの検索条件を入力しても全レコードが出力してしまうので、上記抜粋の 最後の行のコメントを有効にしたところ、こういうSQL文を吐き出しており、 入力した文字列が有効になっていません。 select * from bookinfo where (isbn like '%') and (title like '%%') order by isbn 対応方法につき、ちょっと見当がつかないのですが、何かお心当たりが ありましたらご教示いただけますと幸いです。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPで同じページに似た内容のデータベースを表示

    PHPで同じページに同じデータベース(table)から別の条件でリストを表示させています。 もっと簡単でスマートな方法はないか、ご質問させていただきます。 【表示例】 <鈴木さん> 鈴木たろう 090-0000-0000 鈴木まさゆき 080-0000-0000 鈴木あきこ 03-0000-0000 <佐藤さん> 佐藤まさる 090-0000-0000 佐藤ともみ 080-0000-0000 佐藤けいこ 03-0000-0000 【PHP】 <?PHP $sql = "SELECT name, tel FROM table"; $sql .= " WHERE name LIKE '%鈴木%'"; $recordSet = mysql_query($sql); $rows = mysql_num_rows($recordSet); if($rows){ while($row = mysql_fetch_array($recordSet)) { $table .= "".$row['name'].""; $table .= " ".$row['tel']."<br>"; $table .= "\n"; } } echo "<鈴木さん><br>"; echo $table; mysql_free_result($recordSet); ?> <?PHP $sato_sql = "SELECT name, tel FROM table"; $sato_sql .= " WHERE name LIKE '%佐藤%'"; $sato_recordSet = mysql_query($sato_sql); $sato_rows = mysql_num_rows($sato_recordSet); if($sato_rows){ while($sato_row = mysql_fetch_array($sato_recordSet)) { $sato_table .= "".$sato_row['name'].""; $sato_table .= " ".$sato_row['tel']."<br>"; $sato_table .= "\n"; } } echo "<佐藤さん><br>"; echo $sato_table; mysql_free_result($sato_recordSet); ?> 上記のように、同じデータベース(table)から、 「鈴木さん」「佐藤さん」それぞれ条件を設定して表示していますが、 もっと簡単に短いコードで表示させることは可能でしょうか。 また、可能であれば、それを何と呼べば(検索すれば)宜しいのでしょうか。 お願い致します。

    • ベストアンサー
    • PHP
  • 1つのテキストボックスに入力された複数のキーワードで検索する方法

    開発言語はASPで、DBはSQL Serverを使用して、 現在プログラムの勉強をしております。 Search.aspというファイルで、 1つのテキストボックスに、 例えば、 佐藤 鈴木 のように入力し、 複数のキーワードで OR 検索をしたいのですが。 現在は下記のようなSQLを書いているのですが、 1つのキーワードでしか検索できませんので、 複数のキーワードで検索できるようにするには、 どのようにSQL及び、プログラムを記述したら良いのでしょうか。 dim name name = Request("name") sql = "select * from TABLE " sql = sql & "WHERE id <> 0 " if name <> "" then sql = sql & " AND (name LIKE '%" & name & "%') end if よろしくお願いいたします。

  • sjisでのあいまい検索を教えてください

    Postgres8です。 データベースのエンコーディングは【SQL_ASCII】です。 LIKE検索をした場合のSJISの文字化けに対する対処方法を教えてください あいまい検索をしたいのですが、 文字化け対象文字を含む場合、 どのように記述すればいいのですか? select * from aaa where name = 'パソ\コン'; 上記のように完全一致で検索をすると抽出できます。 select * from aaa where name like '%パソ%' 上記のよう指定してlike検索をしても抽出できます。 しかし以下の場合どちらでも抽出できません。 select * from aaa where name like '%パソコ%' select * from aaa where name like '%パソ\コ%' よろしくお願い致します。

  • MYSQLで全てのカラムから検索する。

    tbというテーブルのbangというカラムに4が含まれていれば表示というのは select * from tb where (bang) like '%4%' ; という形になりますが、このtbテーブルにさらにname,tukiというカラムがあったとして カラムに関係なくレコードのどこかに4が入っていれば抽出するというSQL文が書きたいです。 select * from tb where bang like '%4%' or name like '%4%' or tuki like '%4%' ; と書くことで何とか今まではやってきたのですが、カラム数が増えてきてしまったので、ものすごく長いSQL文なってしまいました。 もう少しスマートにする方法はありませんか?

    • ベストアンサー
    • MySQL
  • DB2でREPLACEによる文字列の置換

    ODBC経由でPHPからDB2にアクセスしているのですが 電話番号から「-」を除いて比較しようとして 「 SELECT * FROM TABLE WHERE REPLACE(TEL,'-','') = '09012345678' 」 というSQL文を送信しても 「 *LIBLのタイプ*NのREPLACEが見つからない。 」 というエラーメッセージが返されます。 DB2にはREPLACE関数が存在しないのでしょうか? もし存在しないのでしたら文字列を置換する関数は何を使えばよいのか教えて頂けないでしょうか。 よろしくお願いします。