【问题标题】:Basic pattern recognition in SQL ServerSQL Server 中的基本模式识别
【发布时间】:2012-06-26 09:43:48
【问题描述】:

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

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 个值。这是不允许的,当 子查询遵循 =、!=、、>= 或当子查询用作 一种表达。该语句已终止。

我该如何解决这个问题?

【问题讨论】:

标签: sql sql-server regex substring


【解决方案1】:

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

这不行吗?

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

【讨论】:

    【解决方案2】:

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

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

    UPDATE Table1 SET NewColumn = fn_ExtractPatternMatchingString(Column,pattern)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多