我有一列包含版本信息,格式如下:
20.6.4.4200
10.28.30.2678
22.8.34.1200
我只想选择最后一个小数点后的值,比如:
4200
2678
1200
最好的方法是什么,或者需要Regex?
在正则表达式支持较差的SQL Server中,可以使用以下字符串函数:
right(val, charindex('.', reverse(val)) - 1)
这个想法是从字符串的末尾开始计数,得到字符串中最后一个点的位置,然后用right()
提取字符串的相关部分。
DB Fiddle上的演示:
select val, right(val, charindex('.', reverse(val)) - 1) new_val
from (values('20.6.4.4200'), ('10.28.30.2678'), ('22.8.34.1200')) t(val)
GO
val|new_val:---------------|:------20.6.4.4200 | 420010.28.30.2678 | 267822.8.34.1200 | 1200
正则表达式可能是最简单的方法。支持正则表达式的数据库通常支持检索子字符串的内容。语法如下:
select regexp_substr(col, '[0-9]+$')
当然,函数可能有不同的名称。