2017-01-24 50 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