2012-01-02 51 views
2

短的一點是:T-SQL搜索在字符串特定的詞

「我使用SQL服務器管理器2008 R2我有列的表格。‘產品名稱’和‘產品尺寸’的大小。該產品被記錄在他的名字那樣:

ELLAS廚房蘋果&姜嬰兒餅乾120克

ELLAS廚房蘋果,葡萄乾 'N' 肉桂Bakey Bakies 4×12克

彈PLAST噴霧石膏32.5毫升

ELLAS廚房階段1南瓜每個

此產品的尺寸應該是:

120克

4×12克

32.5毫升

N/A

(部分產品可以在那裏的名字沒有大小,應設置爲「N/A」)

我想寫的是更新產品尺寸從得到它的T-SQL語句產品名稱。

我已經在JavaScript中做了這個,但爲了做正確的事情,我必須編寫SQL語句,這是我的問題。我發現在T-SQL中使用「正則表達式」非常困難。

我見過如何從字符串中獲取數字的例子,但不知道如何使用sql。

Declare @ProductName  varchar(100) 
Select  @ProductName= 'dsadadsad15234Nudsadadmbers' 

Select  @ProductName= SubString(@ProductName,PATINDEX('% [0-9]%',@ProductName),Len(@ProductName)) 
Select  @ProductName= SubString(@ProductName,0,PATINDEX('%[^0-9]%',@ProductName)) 

Select  @ProductName 

我會欣賞任何示例或想法。 提前致謝。

編輯:

感謝您的回覆,xQbert。

我沒有包括所有可能的格式,因爲如果我有一個很少有人的工作例子,我想我將能夠爲所有人做。不管怎樣,在這裏爲了提供更多的細節都是可能的情況:

(i編號+ 「X」 + Dnumber +字)* +(_)* +(Dnumber +字)* - *表示0或更

其中字可以是 - 克,千克,毫升,CL,包 其中i編號是整數 其中Dnumber是雙 其中_是空間

對於〔實施例:

12×100克 100毫升 2×千克

而且價格(如果有的話)總是在名稱的末尾:

產品名稱+產品獎

例如:

Organix有機有機鷹嘴豆&紅辣椒烤寬麪條190g Organix有機蔬菜&豬燴飯250g Organix大米蛋糕蘋果50g Organix麪包7m + 6包 Organix鹹味餅乾車ESE &洋蔥每個 Organix有機鹹餅乾番茄&羅勒每個 Organix有機階段1個壁球&雞2×120克

+1

你有沒有列出所有可能的尺寸的表?沒有這種或標準的格式,我看不到通過自動化完成任務的方法。我們可以按照猜測和檢查方法來消除一些手動工作;但沒有模式,沒有辦法達到你想要的結果。 (爲什麼不是最後一個「每個」的大小)? – xQbert 2012-01-02 13:58:24

回答

1

PATINDEX不至REGx並且已在TSQL相比.NET限於邏輯處理。你有沒有condisidered CLR整合?

http://msdn.microsoft.com/en-us/library/ms131089(SQL.100).aspx 

這個從2005年開始並且通過CLR整合SQL中的REGX示例。

http://msdn.microsoft.com/en-us/library/ms345136(v=SQL.90).aspx