在SQL中从字符串中获得最右边的字母对



给定一个字段与字母和数字的组合,是否有办法得到最后(最右)对字母(2个字母)在SQL?

SAMPLE DATA
RT34-92837DF82982
DRE3-9292928373DO

对于那些,我想DF和

为清楚起见,这些字母后面只会有数字。

编辑

我会删除任何不是字母的字符,使用REGEXP_REPLACE或基于您的DBMS的类似函数。

regexp_replace(col1, '[^a-zA-Z]+', '')

然后使用RIGHTSUBSTRING函数选择"最右"。

right(regexp_replace(col1, '[^a-zA-Z]+', ''), 2)
substring(regexp_replace(col1, '[^a-zA-Z]+', ''),len(regexp_replace(col1, '[^a-zA-Z]+', ''))-2,len(regexp_replace(col1, '[^a-zA-Z]+', ''))

如果你可以有字母('DF1234A124')的单次出现,那么可以改变正则表达式模式来删除这些也-([^a-zA-Z][a-zA-Z][^a-zA-Z])|[^a-zA-Z]

如您所说,在这些字母之后只会有数字,您可以像下面这样使用Trim和Right函数:

select 
Right(Trim('0123456789' from val), 2) as res
from t

注意:这在SQL Server 2017中有效。

对于旧版本,请尝试以下操作:

select 
Left
(
Right(val, PATINDEX('%[A-Z]%', Reverse(val))+1),
2
) as res
from t

看到演示

相关内容

  • 没有找到相关文章

最新更新