T-SQL在字符串中搜索特定单词

时间:2012-01-02 13:53:13

标签: string tsql search

简而言之:

“我使用的是SQL Server Manager 2008 R2。我的表格中包含”产品名称“和”产品尺寸“的列。产品的大小以他的名义记录:

  

Ellas Kitchen Apple&生姜婴儿饼干120克

     

Ellas Kitchen Apple,Raisin'n'Cinnamon Bakey Bakies 4 x 12g

     

Elastoplast Spray Plaster 32.5ml

     

Ellas Kitchen Stage 1 Butternut Squash每个

此产品的尺寸应为:

  

120克

     

4 x 12g

     

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。

我没有包括所有可能的格式,因为如果我有一个很少的工作示例,我想我将能够为所有人做。无论如何,为了在这里给出更多细节,可能的情况是:

(Inumber +“ x ”+ Dnumber + word)* +(_)* +(Dnumber + word)* - *表示0或更多

其中单词可以是 - g,kg,ml,cl,pack 其中Inumber是整数 Dnumber是双倍的 其中_是空格

例如:

12 x 100g 100毫升 2 x kg

价格(如果有)总是在名称的末尾:

产品名称+产品奖

例如:

Organix Organic Chick Pea&红辣椒烤宽面条190克 Organix有机蔬菜&猪肉烩饭250克 Organix Rice Cakes苹果50克 Organix Rusks 7m + 6包 Organix Savory Biscuits奶酪&洋葱各 Organix Savory Biscuits番茄&罗勒每个 Organix Stage 1壁球&鸡肉2 x 120克

1 个答案:

答案 0 :(得分:1)

PATINDEX不是REGX,与.NET相比,TSQL中的逻辑处理有限。您是否认为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