2014-12-20 3 views
1

전자 메일 주소와 사용자 이름이있는 사용자 테이블 (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 '%@%') 

답변

2

만약 그 SELECT 반환 당신은 당신이하는 것처럼 테이블을 업데이트 할 수 있어야합니다 정확히 :

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