2012-06-26 58 views
-1

我目前已經以這種格式存儲我的數據:基本模式識別

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) 

導致:

子查詢返回多個值。當 子查詢遵循=,!=,<,< =,>,> =或當子查詢用作 表達式時,這是不允許的。該語句已終止。

我該如何解決這個問題?

+0

http://stackoverflow.com/search?q=subquery+returns+more+than+one+row&submit=search – Ben

+0

可能重複:如何在管道上進行分裂分隔字符串變量?](http://stackoverflow.com/questions/7391473/sql-server-2005-how-to-perform-a-split-on-a-pipe-delimited-string-variable) – Ben

回答

1

您不需要子查詢,因爲更新發生在同一行的「內部」。

這不工作?

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

當涉及到文本分析和字符串操作,regular expressions提供比T-SQL字符串函數更加高效和優雅的解決方案。

您可以編寫一個提取模式匹配字符串的CLR User-Defined Function。 [SQL服務器2005年的

UPDATE Table1 SET NewColumn = fn_ExtractPatternMatchingString(Column,pattern)