プロが教えるわが家の防犯対策術!

MySQLサーバのバージョン: 5.1.41
を使ってます。

・やりたいこと
テーブル名:test
id | photo |
1 /aaa/aa.jpg
2 /bbb/bb.jpg
:
:

となっているテーブルに対して フィールド名「photo」に格納されている文字列の先頭に
「 http://www.test.com 」 を全てのレコードに対して追加したいと考えております。

希望する結果
テーブル名:test
id | photo |
1 http://www.test.com/aaa/aa.jpg
2 http://www.test.com/bbb/bb.jpg
:
:

説明不足などございましたら、再度補足させていただきます。
アドバイスのほどよろしくお願い致します。

A 回答 (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 逆引き」で検索してみてください。
    • good
    • 0
この回答へのお礼

ご回答頂いたSQL文でやりたいことが実現できました!

ご回答ありがとうございます。

お礼日時:2011/04/17 18:21

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句での再帰クエリ」が実装されています。
    • good
    • 0
この回答へのお礼

「ストアドプロシジャで実装」??
まだまだ勉強不足です、、このキーワードでまた語句を勉強してみます。

ご回答ありがとうございます。

お礼日時:2011/04/17 18:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す