如何在SQL中删除列中的罗马字母和数值



使用SQL Server,我有一列末尾有数字和罗马数字。如何在不指定位置的情况下单独删除数字?

Job_Title
数据分析师2
经理50
机器人1615
软件工程师
数据工程师III

使用TRANSLATE函数如下:

SELECT TRANSLATE(Job_title, '0123456789', '          ') AS JOB_TITLE
from my_table

您可以使用RTRIM来完成

您应该删除正则表达式中的空格字符。所以,新代码应该是

SELECT case when patindex('%[0-9]%', job_title) > 0 then
rtrim(substring(Job_title,1, patindex('%[0-9]%', job_title) - 1))
else
JOB_TITLE
end 
from my_table
WHERE PATINDEX('%[0-9]%',JOB_TITLE) <>0

我认为你是在试图删除职称末尾的数字,而不是排除结果。因此,正如其他人所提到的,您需要从正则表达式的方括号中删除空格,并将其放在方括号前面,以表示它与前面的内容之间有一个空格。但我认为你还需要删除比较值右侧的通配符,这样数字就必须在职称的末尾,比如。。。

当patidix('%[0-9]',job_title(>0时选择大小写,然后rtrim(子字符串(Job_title,1,patidix('%[0-9]',Job_title(-1(其他的作业标题终止来自my_table

但是,你也提到了罗马数字。。。和如果一个职位头衔可能以";X〃;其中它的意思是";X〃;而不是";10〃;。如果这不可能,您应该能够执行[0-9IVXivx]来替换所有带括号的线段。

最新更新