在定义的小数点后选择特定数据



我有一列包含版本信息,格式如下:

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]+$')

当然,函数可能有不同的名称。

最新更新