在select中选择Sql Server正则表达式

时间:2014-05-28 18:27:45

标签: sql-server regex

我希望在SQL Server V 2008 +中的select statment中使用带有sqlserver的正则表达式。

我需要做的是获取专栏的第一个字。

和第二个将获得列的其余部分,不包括第一个单词。

我知道这很简单,但我对正则表达式并不擅长。

任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分:0)

我不知道你会使用什么样的正则表达式,但是:

^\S+ - 第一个字 .+$ - 用于其余字符串

或者如果可以进行可分组

^(\S+) (.+)$ - 第一个词的第一个括号,其余的第二个词。

答案 1 :(得分:0)

看看Marc Gravell提供的this UDF。它为您提供了第一个单词...然后您可以创建另一个名为“AfterFirstWord”的UDF。

答案 2 :(得分:0)

你不需要像这样的正则表达式。只需使用SUBSTRINGCHARINDEX以及RIGHT来完成句子的其余部分:

SELECT
    SUBSTRING([COLUMN], 0, CHARINDEX(' ', [COLUMN])),         -- Get substring before first space
    RIGHT([COLUMN], LEN([COLUMN]) - CHARINDEX(' ', [COLUMN])) -- Get substring after first space
FROM
    [TABLE]

SQL Server并不真正支持正则表达式,尽管您可以在线找到一些可下载的库。否则,您有PATINDEX,虽然它使用正则表达式,但它不会返回匹配项,而是返回匹配项的索引。在您的情况下,使用CHARINDEX要容易得多,因为您总是需要匹配空格字符。