【问题标题】:Remove column value after '-' in sql删除sql中'-'之后的列值
【发布时间】:2022-01-24 05:19:45
【问题描述】:

我是使用小数据集学习 SQL 的新手。我正在使用 SQL Server,正在尝试清理数据。

我有这样的值的列:

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

预期结果应该如下表所示,这里我尝试删除特殊字符、数字和罗马字母。

Job_title
STAFF ENGINEER
Programmer Analyst
Analyst Communication Systems

谢谢

【问题讨论】:

  • 能否提供示例代码?
  • 您在这里描述了多个替换操作。这些是您需要在此处进行的唯一种清理工作吗?
  • 使用 MSSQL。使用 REPLACE(JOB_TITLE,'%[^a-Z0-9, ]%','') 函数,但对于上述结果我没有尝试任何东西。

标签: sql sql-server replace substring


【解决方案1】:

两步:

  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

【讨论】:

  • 非常感谢您的帮助,查询有效。
猜你喜欢
  • 1970-01-01
  • 2019-08-11
  • 2017-08-14
  • 2019-08-27
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
相关资源
最近更新 更多