Sql Server选择正则表达式

时间:2013-08-30 10:25:19

标签: 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  |

有正则表达式或子字符串的任何建议吗?

3 个答案:

答案 0 :(得分:0)

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)

答案 1 :(得分:0)

可能有简单明智的方式。但这是我能想到的。

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

答案 2 :(得分:0)

试试这个,

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

SQL Fiddle Demo