如何在SQL中使用IN子句替换艺术家姓氏?作业问题求助
问题分析与解决
你的代码没有返回数据的核心原因是多添加了错误的筛选条件:AND LastName IN ('NA')。这行条件会强制只返回姓氏本身就是'NA'的记录,但你的需求是把无姓氏(比如NULL/空字符串)的记录替换为'NA',不是筛选这类记录,所以导致没有匹配结果。
正确的SQL写法
场景1:无姓氏为NULL值
使用COALESCE函数直接将NULL值替换为'NA':
SELECT FirstName, COALESCE(LastName, 'NA') AS LastName FROM mArtist WHERE HomeCountry IN ('Canada', 'UK')
场景2:无姓氏为NULL或空字符串
如果数据表中存在姓氏为空字符串('')的情况,用CASE语句覆盖两种异常场景:
SELECT FirstName, CASE WHEN LastName IS NULL OR LastName = '' THEN 'NA' ELSE LastName END AS LastName FROM mArtist WHERE HomeCountry IN ('Canada', 'UK')
关键说明
- 务必移除WHERE子句中
AND LastName IN ('NA')的错误条件,仅保留HomeCountry IN ('Canada', 'UK')即可完成国家筛选 COALESCE函数的作用是返回参数列表中第一个非NULL的值,适合快速处理NULL替换需求CASE语句更灵活,能覆盖空字符串、特定无效值等多种异常情况
内容的提问来源于stack exchange,提问作者user20166753
相关产品推荐
相关产品推荐

