2016-12-16 8 views
0

カラムの更新時に小さな問題があります。 dbがtestdb上に復元される必要があるとき、私は生産DB上の問題を防ぐためにいくつかのフィールドを変更する必要があります。2つの異なる検索項目が存在する場合のSQLの更新ステートメント

ほとんどの場合、電子メールアドレスとウェブアドレスを調整するだけです。

ここで私はこの1つを歩いた: テーブルには、URLでいっぱいの列があります。 1つのURLはfairworks...で始まり、www.fairworks...

どちらのURLを持つ他の開始に変更する必要がありますTest.fairworks...

に変更するのでfairw.....www.fairw...必要性:TEST.fairw...

私はこのコードで更新しようとしました何とかそれは私が意図したもの行いません

更新URL

SET Url = CASE 
     WHEN (LEFT(Url,3) = 'fai' THEN REPLACE(Url,'fair','test.fair') 
     ELSE 
     WHEN (LEFT(Url,6) = 'www.fa THEN REPLACE(Url,'www.fair', 'test.fair') 
     END 

どこが間違っているのか分かりません。

私は十分なポイントがないので、完全なコードを追加することはできません。どちらのURLがHTTP://で始まり

+0

どのDBMSを使用していますか?しかし、「ELSE」は完全に間違っています。それを取り除く。 –

+0

私はSQL2012で作業します。あなたが正しい。他はここでうまくいきません。 – aks69cw

+0

SQLはクエリ言語であり、DBMS製品ではありません。また、SQL 2012標準もありません。 SQL2011標準(現行)があり、その前にSQL2008がありました。 –

答えて

0

私はこれをテストしていませんが、あなたはこのようなもの使用することができます:ところで

UPDATE [YourTable] 
SET Url = 'www.fairworks' + SUBSTRING(Url, 4, LEN(Url)-4) 
WHERE LEFT(Url,4) = 'fair' 

UPDATE [YourTable] 
SET Url = 'www.fairworks' + SUBSTRING(Url, 8, LEN(Url)-8) 
WHERE LEFT(Url,8) = 'www.fair' 

を、あなたのコードで(ちょうどTHEN前)アポストロフィを逃しました:

WHEN (LEFT(Url,6) = 'www.fa THEN REPLACE(Url,'www.fair', 'test.fair') 
+0

こんにちはマイク、ありがとう。これは私が試してみたいことです。学習にもいいですね。 @ - a_horse_with_no_nameというユーザーの発言でCASE WHENコードを調整しました Updateクエリでreplaceステートメントを使用して再生する方法についても学習しました。 私はまた、欠落したアポストロフィに気付きました。 SSMSが行方不明の文字を表示する方法はいつもいい0) 私のクエリを調整するときにアポストロフィを配置する必要がありました – aks69cw

+0

これは私のコードです。私はそれをテストし、それは意図どおりに正確に働いた。 UPDATE [テーブル] SET \t URL =ケース(LEFT(url、10))= 'http:// 10'。 (URL、 '。17'、 '99') \t \t '(http:// fai') 'http:// fai'(URL、 'http:// fai'、 'http' :http:// www '、' http:// test ')END(URL:' http:// www '、' http:// www '、' http:// www '、' http:// test ') – aks69cw

関連する問題