• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索して置き換えるやり方を教えてください。)

MySQLのテーブルで文字列を置換する方法

このQ&Aのポイント
  • MySQLのテーブルで特定の文字列を別の文字列に置換する方法について教えてください。詳細な要件と実行結果の例を示し、実行方法についてアドバイスをいただきたいです。
  • テーブルの特定の列に登録された文字列の一部を別の文字列で置き換えるには、UPDATE文を使用します。具体的には、WHERE句とREPLACE関数を組み合わせて、特定の条件に一致するレコードの特定の列を置換します。
  • 上記の要件に基づいて、以下のUPDATE文を実行することで目的を達成できます。 UPDATE テーブル名 SET 列名 = REPLACE(列名, '置換前の文字列', '置換後の文字列') WHERE 条件; ただし、指定した条件が正しく一致しない場合や、テーブルの構造が適切でない場合にエラーが発生する可能性がありますので、注意が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

SET句で number に既存の値の前に'東京/'を付けたものを設定すれば良いかと。 http://dev.mysql.com/doc/refman/5.1/ja/update.html 文字列連結には CONCAT 関数を使います。 http://dev.mysql.com/doc/refman/5.1/ja/string-functions.html#function_concat 例) ------------------------------------ UPDATE テーブル名 SET number = CONCAT('東京/', number) WHERE area LIKE '%tokyo%';

anan19
質問者

お礼

アドバイスありがとうございます。 期待した結果が得ることができました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MySQLで複数フィールドから同一語を検索するには・・・

    MySQLでフィールド数20程度のテーブルがあります。 全フィールドに対して、ある同一の語を検索するとき。 WHERE field1 LIKE "%検索語%" OR field2 LIKE "%検索語%" OR ... と書いています。 しかし、同一の検索語を何度も書くのはスマートではありません。 何か良い方法をご存知でしたら教えてください。

  • MySQL WHERE句のLIKE検索

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

  • MySQLで日本語検索

    MySQL初心者のものです。 今PHPとMySQLを利用して検索システムを作っています。 しかし日本語検索がどうしてもうまくいきません。 一応「教えてgoo」でも探してみたのですが、解決しませんでした。 MySQLで、 テーブル名 table フィールド名 field とすると、 select * from table where field like '%キーワード%'; のように検索してみたのですが、思うような結果が返ってきません。 ネットで検索すると「senna」をインストールと書かれていましたが、 そういったものをインストールしなければMySQLで日本語検索は出来ないものなのでしょうか? ちなみに MySQL5.0 PHP5.2.1 を利用しています。

  • php+mysqlでand検索

    ソースコード抜粋 下記のコードを見つけたのですがNotice: Undefined variable: where・・・。 と表示されて実行できません。 なにぶんPHP初心者なのでわかり易く教えてください。 $search = str_replace(" ", " ", $text); $keywords = preg_split("/[  ]+/",$text); $where = " where 1"; foreach( $keywords as $word ){ $where .= " and $key2 like '%$word%'"; } //SQL文 $result = mysql_query("select * from song $where ORDER BY number ASC LIMIT $start,$end");

    • ベストアンサー
    • PHP
  • LIKEで検索

    MySQL 4.0.20 + PHP で名前が入ったテーブルよりLIKEを使って検索すると全然関係のない名前まで引っ張ってきます。 SELECT * FROM `lady` WHERE name LIKE 'らむ' 上記で検索すると 「とも」って名前まで引っ張ってきます。 SELECT * FROM `lady` WHERE name LIKE 'らな' だと 「るる」って名前も引っ張ります。 どうも「ら行」の検索がうまく出来ないようです。 何か回避方法はあるのでしょうか? よろしく御願いします

    • ベストアンサー
    • MySQL
  • PHP+MYSQLでワード検索

    PHP+MYSQLでワード検索を作りたいです。 検索は二つのテーブルの中のいくつかのフィールドに対して行います。 例えばキーで結ばれたテーブルA、Bがあったとして、 テーブルAのフィールド1、フィールド2、フィールド3、 テーブルBのフィールド3、フィールド4、フィールド5のいずれかに [佐藤]という文字列が含まれているデータを取り出す という事をしたいのです。 select * from テーブルA A, テーブルB B where A.フィールド1 = '%佐藤%' or A.フィールド1 like '%佐藤%' or A.フィールド2 like '%佐藤%' or ... という書き方だと、検索対象フィールドやレコードが多いと速度が遅くなりそうな気がします。 フルテキストインデックスを使用して検索を作成しようと思ったら、日本語は対応していないという事でした。 何か良い方法はありませんか? アドバイスをお願いします。 また、上のテーブルA、Bのレコードデータが貼り付けられたHTMLファイルがあります(1レコードで1ファイル)。 HTMLファイルを変数に読み込み、文字列が含まれているかをチェックする方法を思いついたのですが、これは重くなりますか? 検索対象レコードは現在150程度ですが、将来的には数千~数万になると予想されます。

    • ベストアンサー
    • PHP
  • 2つフィールドを連結して検索するには

    MySQLの初心者です。よろしくお願いします。 1つのテーブルにある2つのフィールドのうち、どちらかにキーワードが入っている場合(両方に入っている場合も含む)を抽出したいのですが、検索するキーワードが1個の場合は、下記のようにすれば、うまく動くのですが、 ●1個のキーワードで検索する場合 (例として、2つのフィールドのうちどちらかに「山」のキーワードが入っている場合を抽出) select * from table WHERE (item_name LIKE "%山%" or outline LIKE "%山%" ) ●テーブルの内容(テーブル名:table) item_name | outline ==========+========= 山がある + 山と川 ----------+---------- 山がある + 川と森 ----------+--------- 山がある + 谷と林 --------------------- 質問したいことは、上記のテーブルから、item_nameとoutlineのフィールドのうち、2つのキーワード「山」と「川」が両方含まれるレコードを抽出したいです。上記のテーブルでいうと、抽出の結果、1行目と2行目が抽出したいのです。 ちなみに、下記のように記述したら、上記のテーブルで1行目だけ抽出されます。 select * from table WHERE (item_name LIKE "%山%" and item_name LIKE "%川%" or outline LIKE "%山%" and outline LIKE "%川%" ) 他にも、下記のように試してみたのですが、うまく抽出できませんでした。 SELECT * FROM table WHERE (concat(item_name,outline) LIKE '%山%' and concat(item_name,outline) LIKE '%川%') item_nameとoutlineのフィールドを結合して、結合した文字列で、「山」と「川」の両方が入っているレコードを抽出する方法はありますか? 2つのフィールドの文字列をあわせたなかから、「山」と「川」のキーワードが両方含まれるレコードを抽出したいのですが、何かよい方法はありますでしょうか。ご回答よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • php上でSQL文を実行した結果と、phpMyAdminで実行した結果が違う

    ☆実行環境 php5.3 MySQL4.0 $sql="SELECT * FROM テーブル名 WHERE フィールド名 like '".$変数."%'" php上で上記のようなSQL文を実行させようとしています。 テーブルには該当する行がいくつかあるのですが、ページ上では1行も表示してくれません。 mysql_num_rowsの返り値を見ると0になっています。 SQL文の組み立てがおかしいのかと思い、phpMyAdmin上でSQL文を実行すると、 きちんと欲しい内容が表示されます。 とするとphpでのSQL文の書き方がおかしいのだと思います。 どこかおかしいのかご教授ください。

    • ベストアンサー
    • PHP
  • MySQLで期間指定でキーワード検索するには?

    PHPでMySQLを利用し開発を行っています。 検索ボックスにキーワードを入力して検索をしたいのですが、期間を指定して検索できるようにする方法が分かりません。 さらに1ページに五件ずつ表示するようにしています。 下記はキーワード検索として動いているプログラムです。 例は2つのフィールドから検索しています。 SELECT * FROM テーブル名 WHERE フィールド名1 LIKE '%$search%' OR フィールド名2 LIKE '%$search%' LIMIT 0, 5; これに BETWEEN 期間1 AND 期間2  を追加して完成させようと思っているのですが、 どうも上手くいかないので、どのように書けばよいか教えて下さい。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • データベースのワイルドカードは%ではないの?

    アクセスのテーブルに あ い う があり、 SQL文で *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "%あ%")); *********************************************** としてもエラーにならないけど、「あ」が抽出されません。 *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "*あ*")); *********************************************** にすると、「あ」が抽出されます。 アクセスなどのデータベースのワイルドカードは%だと思っていたのですが違うのですか?