删除 sql 中“-”后的列值

Remove column value after '-' in sql

我刚开始学习 SQL 小数据集。我正在使用 SQL 服务器,正在尝试清理数据。

我有这样的值的列:

Job_title
STAFF ENGINEER-SOFTWARE
Programmer Analyst -IT
Analyst Communication Systems [KBGFJG68718-2]

预期结果应该像下面的table,这里我尝试删除特殊字符、数字和罗马字母。

Job_title
STAFF ENGINEER
Programmer Analyst
Analyst Communication Systems

谢谢

两步:

  1. 找到第一个既不是字母也不是空格也不是数字的字符。您可以为此使用 PATINDEX
  2. 如果找到这样的字符,将字符串提取到那里并删除尾随空格。否则取整个字符串。

查询:

select
  case when patindex('%[^a-zA-Z0-9 ]%', job_title) > 0 then
    rtrim(substring(job_title, 1, patindex('%[^a-zA-Z0-9 ]%', job_title) - 1))
  else
    job_title
  end as job
from mytable;

演示:https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=ab1d7bd0890530c55ced09457f532136