2017-01-24 43 views
0

我想從一個表中創建一個視圖,我們有一個FirstName,LastName和MiddleName列,MiddleName可以是NULL,加上薪水。我需要用MiddleName替換MiddleName和空字符串。我正在使用SQL Management Studio。 我想出了這個代碼:創建視圖。用空字符串替換NULL值。 SQL

CREATE VIEW V_EmployeeNameJobTitle AS 
SELECT FirstName + ' ' + MiddleName + ' ' + LastName AS [Fullname], Salary FROM Employees WHERE MiddleName IS NOT NULL 
UNION SELECT FirstName + ' ' + LastName AS [Fullname], Salary FROM Employees WHERE MiddleName IS NULL 

但是,這似乎並沒有工作,我想,這是不是很漂亮。任何其他建議,我可能會縮短這一點。提前致謝。

+0

'COALESCE(列, '')'。 – jarlh

回答

1

使用ISNULL()功能,它將取代NULL值INT您選擇的值。爲前:

CREATE VIEW V_EmployeeNameJobTitle AS 
SELECT FirstName + ' ' + ISNULL(MiddleName, '') + ' ' + LastName AS [Fullname], Salary 
FROM Employees 

,或者如果你不想讓2位當中間名稱爲空,則可以進行以下操作:

CREATE VIEW V_EmployeeNameJobTitle AS 
SELECT (CASE WHEN MiddleName IS NULL THEN FirstName + ' ' + LastName 
      ELSE FirstName + ' ' + MiddleName + ' ' + LastName END) AS [Fullname], 
Salary 
FROM Employees 
2
SELECT FirstName + ' ' + 
     (case when MiddleName is null then '' else MiddleName + ' ' end) + 
     LastName AS [Fullname] 
+1

但是我只需要FirstName和LastName之間的單個空格。如果我只是使用coalesce或isNull不會有兩個空格嗎? –

+0

是的。我剛剛回答了這個問題,並考慮了你的情況 – Zeina

0

使用IsNull功能

CREATE VIEW V_EmployeeNameJobTitle AS 
    SELECT FirstName + ' ' 
     + MiddleName + ' ' 
     + IsNull(LastName, '') AS [Fullname] 
    , Salary 
FROM Employees