SQL中按性别拼接MR/MS与全名时语法错误排查求助
SQL语法错误排查与修正
你的SQL语句存在括号不匹配问题,导致语法报错,具体问题和修正方案如下:
错误点分析
每个then和else分支里的upper(concat(...))表达式都缺少闭合的右括号:
- 内层
concat(customer_fname,customer_lname)需要一个右括号闭合 - 外层
concat('MR. ', ...)也需要一个右括号闭合 - 加上
upper()本身的闭合括号,每个分支的表达式末尾需要补充两个右括号
修正后的SQL语句
select customer_id, case when o.customer_gender = 'M' then upper(concat('MR. ', concat(customer_fname, customer_lname))) else upper(concat('MS. ', concat(customer_fname, customer_lname))) end as Customer_Full_name from online_customer o;
额外优化建议
如果你的SQL支持多参数concat(如MySQL、PostgreSQL等),可以简化嵌套的concat为单一层级,提升可读性:
select customer_id, case when o.customer_gender = 'M' then upper(concat('MR. ', customer_fname, customer_lname)) else upper(concat('MS. ', customer_fname, customer_lname)) end as Customer_Full_name from online_customer o;
内容的提问来源于stack exchange,提问作者Pree07
相关产品推荐
相关产品推荐

