You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中移除括号内所有文本并返回左侧有效内容

问题解决:提取employee_name中的姓名并修复LEFT函数报错

报错原因

你原来的SQL报错是因为当employee_name字段里没有(符号时,CHARINDEX('(', A.[employee_name])会返回0,计算0-1=-1后传给LEFT函数,而LEFT不接受负数长度参数,直接触发报错。

解决方案

要同时处理有括号和无括号的情况,并且确保结果没有尾随空格,用下面两种方法都可以:

方法1:用NULLIF简化逻辑

RTRIM(LEFT(A.[employee_name], NULLIF(CHARINDEX('(', A.[employee_name]) - 1, -1)))
  • NULLIF会把CHARINDEX返回0时产生的-1转换成NULL,而LEFT遇到第二个参数为NULL时会返回整个字段内容,避免报错
  • RTRIM用来去掉提取结果的尾随空格,比如示例中John Smith 后面的空格

方法2:用CASE语句更直观

RTRIM(
    CASE 
        WHEN CHARINDEX('(', A.[employee_name]) > 0 
        THEN LEFT(A.[employee_name], CHARINDEX('(', A.[employee_name]) - 1)
        ELSE A.[employee_name]
    END
)
  • 先判断字段里是否存在(,存在就截取括号前的内容,不存在就直接用整个字段
  • 最后统一用RTRIM清理尾随空格

如果需要同时去掉姓名开头的空格,可以把RTRIM换成LTRIM(RTRIM(...))。

内容的提问来源于stack exchange,提问作者Carle Veall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:45:03