SQL Server中的基本模式识别

时间:2012-06-26 09:43:48

标签: sql sql-server regex substring

我目前以这种格式存储数据:

Word1 - Word2 - Number.I.Need.To.Extract.Separated.By.Periods - Word3 - Word4

我想要做的是编写一个更新语句,将我刚刚创建的列设置为Number.I.Need.To.Extract.Separated.By.Periods

我最好的方法是做什么,或者像这样工作?

我试着写如下:

UPDATE Table1
SET NewColumn = 
               (SELECT SUBSTRING(Column, 19, 14)
                FROM Table1)

结果是:

  

子查询返回的值超过1。这是不允许的   子查询跟随=,!=,<,< =,>,> =或当子查询用作   一种表达。声明已经终止。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您不需要子查询,因为更新发生在同一行的“内部”。

这不起作用吗?

UPDATE Table1 SET NewColumn = SUBSTRING(Column, 19, 14)

答案 1 :(得分:0)

在文本分析和字符串操作方面,regular expressions提供了比TSQL字符串函数更高效和更优雅的解决方案。

您可以编写一个CLR User-Defined Function来提取模式匹配字符串。

UPDATE Table1 SET NewColumn = fn_ExtractPatternMatchingString(Column,pattern)