简而言之:
“我使用的是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克
答案 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