SQL Server SQL中字符串最右端字母对的获取

mum43rcc  于 2023-01-01  发布在  其他
关注(0)|答案(2)|浏览(130)

给定一个由字母和数字组合而成的字段,有没有办法在SQL中获得最后一对(最右边的)字母(2个字母)?

SAMPLE DATA
RT34-92837DF82982
DRE3-9292928373DO

对于这些,我希望DF和DO
为清楚起见,这些字母后面只有数字。
编辑
这适用于SQL Server。

lvmkulzt

lvmkulzt1#

我会使用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]+', ''))

如果您可以使用单个字母('DF 1234 A124'),则可以更改regex模式以删除这些字母-([^a-zA-Z][a-zA-Z][^a-zA-Z])|[^a-zA-Z]

zdwk9cvp

zdwk9cvp2#

正如您所说,* 这些字母后面将只有数字 *,您可以按如下方式使用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

See demo

相关问题