如果在select语句中不为空,如何替换列?

Spe*_*ral 1 sql-server t-sql functions

我有一个联系人(ID、名字、姓氏、中间名)。

例如:

| ID | FirstName | LastName | MiddleName |
|====|===========|==========|============|
| 1  | Mark      |Jordan    | E          |
|----|-----------|----------|------------|
| 2  | James     | Blunt    | NULL       | 
|----|-----------|----------|------------|
Run Code Online (Sandbox Code Playgroud)

我要输出

Mark E. Jordan
James Blunt
Run Code Online (Sandbox Code Playgroud)

因此,如果 MiddleName 不为空,则添加一个 '.' 之后,否则输出空值。

我知道isnull函数,但是我需要的是isnotnull函数。如何完成查询?

到目前为止我的查询:

select FirstName + ' ' + isnull(...)  + LastName
from Contact
Run Code Online (Sandbox Code Playgroud)

Sha*_*eis 6

一个NULL加一个值产生一个NULL*真是太好了,这意味着你可以做这样的事情......

SELECT FirstName + ' ' + ISNULL(MiddleName + '. ', '') + LastName 
FROM Contact;
Run Code Online (Sandbox Code Playgroud)

希望这适用于您想要的。

* 假设CONCAT_NULL_YIELDS_NULL已设置ON,应该如此;