使用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]
来替换所有带括号的线段。