首页 > 解决方案 > 只有在 SQL Server 中不为空时,我如何连接?

问题描述

我有这张桌子:

人表

|  id  | name |
---------------
|  10  | Mike |
| NULL | Jane |

我想从表中选择 id 和 name 并在 id 上使用 concat,但前提是它不为空,如下所示:

+------+------+
|  Id  | Name |
+------+------+
| A10  | Mike |
| NULL | Jane |
+------+------+

我尝试了以下方法:

SELECT ISNULL(concat('A', id), NULL) AS id, name FROM PeronTable

但我的查询返回这个:

+-----+------+
| Id  | Name |
+-----+------+
| A10 | Mike |
| A   | Jane |
+-----+------+

标签: sqlsql-servertsqlconcatsql-null

解决方案


嗯。您可以使用+代替concat()

select 'A' + convert(varchar(255), id), name
from t;

convert()(或cast())是必要的,假设它id是一个数字而不是一个字符串。

+NULL如果任何参数是,则返回NULLconcat()忽略NULL论点。

当然,您可以使用concat()表达式case

select (case when id is not null then concat('A', id) end), name
from t;

推荐阅读