TSQL - 在最后一段时间后删除所有内容

时间:2016-04-04 20:20:10

标签: sql sql-server string substring

我有一个列字符串,可能是以下之一。

data

我的要求是,如果有3个句点/小数点,则删除最后一个句点/小数以及之后的所有内容。

如果我使用以下内容,这将处理仅存在“.0”的第一行,但是,它不适用于第三行。

10.0.2531.0
10.50.2500
10.0.2531.60

我也尝试了以下但是没有用。

select 
case 
        when right(column_1,2) = '.0' then left(column_1,len(column_1)-2)
        else column_1 end,
FROM 
table_1

第三个句点/小数后的数字可以是0或其他数字。

2 个答案:

答案 0 :(得分:3)

以下工作,假设从未有五个时期:

select (case when ip like '%.%.%.%'
             then left(ip, len(ip) - charindex('.', reverse(ip))
             else ip
        end) as firstThree

答案 1 :(得分:2)

使用charindexsubstring的组合。

SQL Fiddle

select reverse(substring(reverse(column_1), charindex('.',reverse(column_1))+1, len(column_1))) 
from table_1
where len(column_1) - len(replace(column_1,'.','')) = 3