2012-02-20 95 views
7

表名:Employee
列名:Emp_name更新一列所有行

Emp_name有这样的内容:

xx\rama, 
xx\rajesh, 
xx\vignesh 

我从所有的行删除xx\更新Employee表列Emp_name

请帮帮我。

回答

10
UPDATE Employee 
SET EMP_Name = REPLACE(Emp_name, 'xx\', '') 

这将删除所有记录中的所有发生xx\

+0

感谢您的回复。你可以让我知道如何只更新上表列员工的第一行? – 2012-02-20 16:56:57

+0

我可以知道如何回滚上述更新? – 2012-02-29 14:05:26

+0

因为您正在擦除使这些行可识别的原因,所以不能这样做。 – JNK 2012-02-29 17:06:46

1
UPDATE [Employee] 
SET Emp_Name=REPLACE(Emp_Name, 'xx\', '') 

如果你只是想只更新第一,然后做:

UPDATE [Employee] 
SET Emp_Name=REPLACE(Emp_Name, 'xx\', '') 
WHERE Emp_Id=(SELECT MIN(Emp_Id) FROM [Employee]) 
+0

感谢您的回复。你可以让我知道如何只更新表Employee列的第一行? – 2012-02-20 16:53:39

+1

这取决于你描述的第一行。你的桌子上有什么专栏?你有主键字段吗?您作为第一行的主键字段的值是多少? – Curt 2012-02-20 16:54:34

+0

我已将Emp_id作为我的主键 – 2012-02-20 16:58:36

4
update Employee set 
Emp_name = substring(Emp_name, 4) 
where Emp_name like 'xx\\%'; -- escaped backslash as per your database flavour 
+0

+1不同的方法 – JNK 2012-02-20 16:29:48

+2

我不认为这会奏效。我认为最后一行需要更改为'emp_name like'xx \\%'' – Curt 2012-02-20 16:30:52

+0

感谢您的回复。你可以让我知道如何只更新上表列员工的第一行? – 2012-02-20 16:56:20

-1

我“米假设这是MS SQL,所以如果是,这应该工作

更新员工

集EMP_NAME =右(E mp_name,len(emp_name) - 3)

+0

感谢您的回复。你可以让我知道如何只更新上表列员工的第一行? – 2012-02-20 16:57:32

+0

好吧,如果你知道emp_name,你可以更新employee set emp_name right(emp_name,len(emp_name) - 3)where emp_name ='somename'否则你可以更新employee set emp_name right(emp_name,len(emp_name) - 3)where emp_name =(从员工中选择top 1) – nikolifish 2012-02-20 17:48:28