古い値を保持するSQLの行を更新する

SQLの私のテーブル

CREATE TABLE Person(
  Person_id INT PRIMARYKEY
  Person_name NVARCHAR(250)
)

テーブルのデータ:

INSERT INTO Person VALUES(1,'Peter')

私は古い値を保持するSQLの行を更新します。

UPDATE Person SET Person_name = 'Mary' WHERE Person_id = 1

このコマンドは機能しません。更新後の列Person_nameは値 'Peter Mary'です

1
nl ru de
どのように動作しませんか?エラーメッセージを投稿できますか?また、どのDBMSを使用していますか?
追加された 著者 e-mre,

2 答え

RDBMS連結演算子を使用して、リテラル値 MaryPerson_name 列の値と連結する必要があります。しかし、使用しているRDNMSを指定していません。

ここに標準的な方法です:

UPDATE Person 
SET Person_name = Person_name || ' ' || 'Mary' 
WHERE Person_id = 1;

SQL Serverの場合、 + 演算子は次のように使用します。

UPDATE Person 
SET Person_name = Person_name + ' ' + 'Mary' 
WHERE Person_id = 1;
4
追加された
それは仕事です。どうもありがとうございます。
追加された 著者 user1761176,

これはあなたが成し遂げたいのですか?

更新前:

ID | Person_name
---+---------------
1  | Peter

更新後:

ID | Person_name
---+---------------
1  | Peter Mary

たとえばMySQLを使用している場合は、次の方法を使用できます。

UPDATE Person 
SET Person_name = CONCAT(Person_name, ' ', 'Mary') 
WHERE Person_id = 1

空白と新しい値を CONCAT するだけです現在の値

使用しているRDBMSを追加することを忘れないでください。他のRDBMSには、異なる構文と可能性があります。

4
追加された