Change existing data in a table.
Syntax [WITH common_table_expression [ ,...n ] ] UPDATE [TOP (expression) [PERCENT] ] {object | rowset_function_limited [WITH ( Table_Hint_Limited [ ...n ] ) ] } SET {column_expression_clause } [,...n] [OUTPUT Clause] [FROM {table_source } [ ,...n ] ] [WHERE where_clause ] [OPTION ( query_hint [,...n] ) ] [;] column_expression_clause: column= { expression | DEFAULT | NULL } udt_column.property = expression udt_column.field = expression } udt_column.method ( argument [ ,...n ] ) column { .WRITE ( expression , @Offset , @Length ) } @variable = expression @variable = column = expression [,...n] where_clause: search_condition CURRENT OF { {[GLOBAL] cursor} | cursor_variable } object: server.database.schema.table_or_view database.[schema].table_or_view schema.table_or_view Key WITH common_table_expression A temporary named result set or view TOP The number or percent of random rows that will be updated. rowset_function_limited Either the OPENQUERY or OPENROWSET function. SET List of column or variable names to be updated. DEFAULT Load the column's default value (if no default defined will set to NULL) udt_column A user-defined type column. .WRITE Update a substring of the column value: replace @Length units starting from @Offset of column with expression. @variable Set the variable to the value returned by expression. @variable = column = expression Set the variable to the same value as the column. @variable = column, column = expression, Set the variable to the pre-update value of the column. OUTPUT.. Return the updated rows. CURRENT OF perform the update at the current position of the cursor. query_hint Apply query optimizer hints
Examples
-- Apply a discount to orders placed today UPDATE Sales.tblOrderLines SET Linecost = Linecost * 0.95 FROM Sales.tblOrderLines AS sl JOIN Sales.tblOrderHeader AS so ON sl.OrderID = so.OrderID AND so.OrderDate > CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112)) ; GO -- Wildcard update UPDATE Sales.tblOrderLines SET OrderDescription = REPLACE(OrderDescription, 'original string', 'replacement string') WHERE OrderID = 64; GO -- Update with inner join UPDATE t1 SET col = t2.col FROM Table1 t1 INNER JOIN Table2 AS t2 ON t1.ID = t2.ID
"When debugging, novices insert corrective code; experts remove defective code" - Richard Pattis
Related commands:
INSERT
BULK INSERT
CREATE TABLE
DELETE
EXECUTE
IDENTITY (Property)
SELECT
SET ROWCOUNT
UPDATE(column) - Function, test for insert/update
Equivalent Oracle command: UPDATE