2017-10-09 5 views
-1

私はカラムにupdate文を使用しましたが、今度はそれを逆にしたいと思います。これを元に戻す方法はありますか?SQL Serverの更新機能を元に戻すにはどうすればよいですか?

これは、私はこのクエリを使用し、元のデータ

Name Score 
John 15 
John 15 

です:

Name Score 
John 15na 
John 15na 

が、私はこれを元に戻すとnaを削除できます:私はこれを与えた

UPDATE T1 
SET [score] = [score]+'na' 
WHERE (name = ‘john’) 

?スコアをフロートにしたい。

UPDATE T1 
SET [score] = LEFT([score],LEN([score])-2) 
where (name = 'john') 
+2

「ロールバック」を試しましたか? –

+0

まだ、あなたは例を挙げることができますか? – luanstat

+0

私はあなたが 'SQL'を知っていることを納得させます。すべてのDBSでは、データの変更を永続化し、最後のコミット以降のすべての変更をUNDOにする 'commit'のようなものがあります(いくつかの文は自動コミットを行います)。 –

答えて

4

元に戻します。手動で元の値に言及して更新したか、ROLLBACKです。 IMPLICIT_TRANSACTIONSがオンの場合、ROLLBACK TRANSACTION;を実行してROLLBACKとすることができます。 EXPLICIT_TRANSACTIONSはその後、上に設定されている場合しかし、あなたはそう...

BEGIN TRANSACTION; 

UPDATE T1 
SET [score] = [score]+'na' 
where (name = ‘john’); 

--if unhappy with results.. 
ROLLBACK TRANSACTION; 

またはあなたがBEGIN TRANSACTIONを毎回指定せずにROLLBACKをご希望の場合、それはまだない場合にIMPLICIT_TRANSACTIONSを設定するようBEGIN TRANSACTIONを指定する必要があります。

SET IMPLICIT_TRANSACTIONS ON; 

UPDATE T1 
SET [score] = [score]+'na' 
where (name = ‘john’); 

--if unhappy with results.. 
ROLLBACK TRANSACTION; 
+0

@justiceorjustus良い点ですが、文字列から 'na'を取り除くAFAICTは、VARCHARフィールドに含まれていても浮動小数点にする必要があります。 OPが実際に列をFLOAT型にしたいとは思っていません。もしそうなら、私はそれをするために何かを加えるつもりです。 –

1

あなたがTTとして行うことができ、次のいずれかを追加naを除去することにより、

関連する問題