2016-09-02 18 views
0

我正在使用SQL Server Studio管理。以下是我遇到的問題。連續連接記錄(名稱)以創建電子郵件地址

表名:市民

Firstname  Lastname  Email 

John    Smith  [email protected] 

Andrew   Evans  [email protected] 

我想改變的電子郵件地址,這兩個記錄採用格式

[email protected] [email protected]。 gov.uk

想要的結果:

Firstname  Lastname  Email 

John    Smith  [email protected] 

Andrew   Evans  [email protected] 

所以它會是一個名字和姓氏的連接,在它們之間有一個點,並加上@ ipno.gov.uk

我真的很感謝你的幫助或指導。

回答

1

我假設你要更新整個表。試試這個簡單的方法,

Lower() - >將大寫字母(如果有)轉換爲小寫。

UPDATE Citizens 
SET Email = Lower(FirstName) + '.' + Lower(LastName) + '@ipno.gov.uk' 
+0

謝謝SOOOOO多! – optimisteve

1
UPDATE Citizens SET Email = LOWER(FirstName) + '.' + LOWER(LastName) + '@ipno.gov.uk' WHERE FirstName IN ('John', 'Andrew') AND LastName IN ('Smith', 'Evans') 
+0

一些解釋可能會有幫助 - 僅限代碼的答案是不鼓勵的。 – Eiko

0

對於SQL Server 2012+,你可以使用使用CONCAT

CONCAT(LOWER(FirstName), '.', LOWER(LastName), '@ipno.gov.uk') 

樣品執行與給定的數據:

DECLARE @Citizens TABLE (FirstName VARCHAR (100), LastName VARCHAR (100), Email VARCHAR (100)); 

INSERT INTO @Citizens (FirstName, LastName, Email) VALUES 
('John', 'Smith', '[email protected]'), 
('Andrew', 'Evans', '[email protected]'); 

-- Only to update the two records need to add the WHERE clause 
-- If you want to update for all the entries in the table remove the WHERE clause 

UPDATE @Citizens SET Email = CONCAT(LOWER(FirstName), '.', LOWER(LastName), '@ipno.gov.uk') 
FROM @Citizens 
WHERE FirstName = 'John' AND LastName = 'Smith' 

UPDATE @Citizens SET Email = CONCAT(LOWER(FirstName), '.', LOWER(LastName), '@ipno.gov.uk') 
FROM @Citizens 
WHERE FirstName = 'Andrew' AND LastName = 'Evans' 
+0

感謝這....爲什麼你使用DECLARE命令..我是新來的SQL,不知道我明白它的使用 – optimisteve

相關問題