带正则表达式的Sql Server select

带正则表达式的Sql Server select,sql,sql-server,regex,database,subquery,Sql,Sql Server,Regex,Database,Subquery,我们可以使用正则表达式从数据库中选择项吗? 表项如下所示 Table column|name| 10.01.02 | a | 100.2.03 | b | 1021.10.04 | c | Table column|name| 10.01 | a | 100.2 | b | 1021.10 | c | 现在我的问题是,我需要选择列并获得如下所示的子字符串 Table column|name| 10.01.02 | a | 10

我们可以使用正则表达式从数据库中选择项吗? 表项如下所示

Table column|name|
10.01.02    | a  |
100.2.03    | b  |
1021.10.04  | c  |
Table column|name|
10.01       | a  |
100.2       | b  |
1021.10     | c  |
现在我的问题是,我需要选择列并获得如下所示的子字符串

Table column|name|
10.01.02    | a  |
100.2.03    | b  |
1021.10.04  | c  |
Table column|name|
10.01       | a  |
100.2       | b  |
1021.10     | c  |
有关于正则表达式或子字符串的建议吗

select left(a, datalength(a) - charindex('.', reverse(a))), b
from (
    select '10.01.02', 'a' union all
    select '100.2.03', 'b' union all
    select '1021.10.04', 'c'
) t(a,b)
我认为使用regexp没有解决方案

UPD

另一个解决方案:

select reverse(parsename(reverse(a), 1)) + '.' + reverse(parsename(reverse(a), 2)), b
from (
    select '10.01.02', 'a' union all
    select '100.2.03', 'b' union all
    select '1021.10.04', 'c'
) t(a,b)

也许有更简单更聪明的方法。但这是我能想到的

select substr(column, 1,lenght(column)-instr(reverse(column),'.'), name from table;
试试这个

SELECT SUBSTRING(column1,0,(CHARINDEX('.',column1,CHARINDEX('.',column1)+1))) 
FROM Table1

如果表列中有更多项目,该怎么办?您没有说只需要保留前两个部分,而不需要删除最后一个部分。看看另一个解决方案。我更新了我的答案,我道歉。我没有注意到,它是针对sql server的。我把mssql误读为mysql。