我有一个包含版本信息的列,格式如下:
20.6.4.4200 10.28.30.2678 22.8.34.1200
我只想选择最后一个小数点后的值,比如:
4200 2678 1200
最好的方法是什么?或者需要正则表达式吗?
r8uurelv1#
在正则表达式支持较差的sql server中,可以按如下方式使用字符串函数:
right(val, charindex('.', reverse(val)) - 1)
其思想是获得字符串中最后一个点的位置,从字符串末尾开始计数,然后用 right() .db小提琴演示:
right()
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 | 4200 10.28.30.2678 | 2678 22.8.34.1200 | 1200
bvjxkvbb2#
正则表达式可能是最简单的方法。支持正则表达式的数据库通常支持检索子字符串的内容。语法如下:
select regexp_substr(col, '[0-9]+$')
当然,函数可能有不同的名称。
2条答案
按热度按时间r8uurelv1#
在正则表达式支持较差的sql server中,可以按如下方式使用字符串函数:
其思想是获得字符串中最后一个点的位置,从字符串末尾开始计数,然后用
right()
.db小提琴演示:
bvjxkvbb2#
正则表达式可能是最简单的方法。支持正则表达式的数据库通常支持检索子字符串的内容。语法如下:
当然,函数可能有不同的名称。