例如,我有一串文本,如下所示
约翰·史密斯(老板:汤姆·柯林斯)(onleave)
但我只想返回 John Smith,John Smith 之后没有空格。 John Smith 存储在employee_name 字段中 有没有办法在 sql server 中做到这一点? 括号可以有多个实例
我尝试使用下面的 左(A.[员工姓名], CHARINDEX('(', A.[员工姓名]) - 1) 但它在 SSMS 中返回以下错误
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。 该声明已终止。
您的问题是,当
(
字段中没有 employee_name
时,CHARINDEX
返回 0
,因此传递给 LEFT
的索引无效(-1
)。您需要先检查 (
是否存在。例如:
select CASE WHEN CHARINDEX('(', A.[employee_name]) > 0
THEN TRIM(LEFT(A.[employee_name], CHARINDEX('(', A.[employee_name]) - 1))
ELSE TRIM(A.[employee_name])
END
from A
上进行演示