使用子查询更新列

时间:2014-12-20 22:20:54

标签: sql sql-server

我有一个用户表(tbUser),其中包含列电子邮件地址和用户名,我试图删除用户名栏中的任何电子邮件地址。以下查询查找该人使用' @'的所有记录。在他们的用户名中,我想把所有内容都放在' @'的左边。 - 这足以让我弄清楚,如果它的电子邮件地址不是太严格,它是否真的是一个电子邮件地址。

SELECT LEFT(username, CHARINDEX('@', username) - 1) AS Expr1
FROM     tbUser
WHERE  (username LIKE '%@%')

现在我想更新所有用户名,以便它只是' @'左边的文字。但不知道该怎么做。它类似于下面的查询,但它并不完全正确。

UPDATE tbUser
SET username = (SELECT LEFT(username, CHARINDEX('@', username) - 1) AS Expr1
                FROM tbUser AS tbUser_1)
WHERE  (username LIKE '%@%')

1 个答案:

答案 0 :(得分:2)

如果SELECT完全返回您想要的内容,您应该能够更新表格,如下所示:

UPDATE tbUser
SET username = LEFT(username, CHARINDEX('@', username) - 1)
WHERE username LIKE '%@%'