SQL Server 按空值规则拼接姓名否则返回用户名的SELECT查询
SQL Server 需求实现查询语句
核心逻辑说明
- 触发返回
UserName的条件:FirstName或LastName任意一个为NULL、空字符串,如需兼容全空格脏数据可追加TRIM判断 - 满足拼接条件时,返回固定格式
LastName, FirstName的拼接字符串
实现代码
全版本兼容写法(CASE语句,适配所有SQL Server版本)
SELECT CASE WHEN ISNULL(FirstName, '') = '' OR ISNULL(LastName, '') = '' THEN UserName ELSE CONCAT(LastName, ', ', FirstName) END AS QueryResult FROM 你的实际业务表名;
说明:
ISNULL(字段, '')会把字段为NULL的场景统一转为空字符串,和原生空字符串的判断逻辑合并,避免冗余判断条件- 用
CONCAT做拼接比直接用+更安全,会自动完成类型转换,避免隐式转换报错- 如需过滤全空格的无效脏数据,可将判断条件调整为:
WHEN TRIM(ISNULL(FirstName, '')) = '' OR TRIM(ISNULL(LastName, '')) = ''
高版本简化写法(适配SQL Server 2012及以上版本)
SELECT IIF( ISNULL(FirstName, '') = '' OR ISNULL(LastName, '') = '', UserName, CONCAT(LastName, ', ', FirstName) ) AS QueryResult FROM 你的实际业务表名;
匹配验证
上述查询对示例表的输出完全符合期望:
- 两个字段都有效(Bob/Jones、George/Glass)的记录,自动返回
Jones, Bob、Glass, George格式结果 - 任意姓名字段为NULL/空的记录,直接返回对应
UserName值,和示例输出完全一致
内容的提问来源于stack exchange,提问作者user15124099
相关产品推荐
相关产品推荐

