- ベストアンサー
MySQLサーバのバージョン: 5.1.41を使用して、文字列を追加してUPDATEしたい
- MySQLサーバのバージョン: 5.1.41を使用して、テーブルに格納されている文字列に「http://www.test.com」を追加する方法について教えてください。
- テーブル名「test」のフィールド名「photo」に格納されている文字列の先頭に「http://www.test.com」を全てのレコードに追加する方法を教えてください。
- MySQLサーバのバージョン: 5.1.41を使っているテーブル「test」の「photo」フィールドに格納されている文字列の先頭に「http://www.test.com」を追加する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
昨日に引き続き回答します。 文字列の連結は concat関数を使用します。 update test set photo = concat('http://www.test.com', photo) where photo is not null and photo not like 'http%'; where句は 「既にphotoに値が入っていて」かつ「まだhtpp...を付加していない」 条件で更新したいかな、と思って付けました。 条件無しで一括で更新して構わなければwhere以降は不要です。 以下は余計なお世話かもしれませんが。。 何かMySQL関連の書籍はお持ちではないのでしょうか? 今回のご質問程度の内容であれば、逆引き系のリファレンスが一冊あれば、「いつ来るかわからない回答を待つ」よりは、確実に速く(かつ正確な)解法が得られます。 Amazon で「MySQL 逆引き」で検索してみてください。
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
concat関数を使ってupdateは、既に#1さんが回答されている通りです。 前回の質問で、回答するタイミングがなかったので、参考までに。 「1~100の列値を持つ行を、1回のSQL発行で実装したい」という件。 「1回のSQL」という要件が、どれくらい重要なのか分かりませんが、MySQL 5.0以降とのことなので、ストアドプロシジャで実装するといった方法があります。 ちなみに、 PostgreSQLであれば、 (1)generate_series関数で生成したものをinsert (2)PostgreSQL 8.4(?)で、「with句での再帰クエリ」が実装されているので、そこで生成したものをinsert といった実装方法があり得ると思います。再帰クエリは、ちょっと小細工し過ぎではありますが。 SQL Serverでも、SQL Server 2005で、「with句での再帰クエリ」が実装されています。
お礼
「ストアドプロシジャで実装」?? まだまだ勉強不足です、、このキーワードでまた語句を勉強してみます。 ご回答ありがとうございます。
お礼
ご回答頂いたSQL文でやりたいことが実現できました! ご回答ありがとうございます。