2013-07-26 43 views
0

我有一个大型的IT产品表,近300万条记录。正则表达式在SQL Server 2000中

在那里的监视器/笔记本电脑的屏幕大小以各种方式描述。像...

17in 
17.3-TFT 
17.3TFT 
12.1-inch 
15" 

我上面想在格式

17in 
17.3in TFT 
17.3in TFT 
12.1in 
15in 

请建议我用(正则表达式的首选)一个更新查询,因为有可能的组合太..

我的数据实际上是如下所示

Hp EliteBook 8770w Core i5-3360m/4GB 500GB 17.3-TFT Win7 Pro + Docking Station     
Hp EliteBook 8770w Core i7-3630QM/8GB 750GB 17.3TFT Blu-ray W8Pro/W7Pro + MON:23i     
10.1" Glos 1024x600 ledbubrsb2led Bottom Under Bottom Right           
10.1in Neoprene Sleeve Black (fits Up To 10.1-inch Mini Notebook)         
12.1" Matte 1024x768 Ccfl 1LCD For Lenovo               
12.1-inch Antiglare Display          

我可以用下面的SQL选择它们。

select * from rprd 
where 
dsc like'%[0-9][0-9].[0-9]TFT%' collate sql_latin1_general_cp1_cs_as or 
dsc like'%[0-9][0-9].[0-9][^A-Za-z0-9]TFT%' collate sql_latin1_general_cp1_cs_as or 
dsc like'%[0-9][0-9].[0-9][^A-Za-z0-9]inch%' collate sql_latin1_general_cp1_cs_as or 
dsc like'%[0-9][0-9].[0-9][^A-Za-z0-9]"%' collate sql_latin1_general_cp1_cs_as or 
dsc like'%[0-9][0-9].[0-9]"%' collate sql_latin1_general_cp1_cs_as 

我需要一种方法来更新这些

回答

1

试试这个:

SELECT substring(a, 0, LEN(a) - PatIndex('%[0-9]%', REVERSE(a)) + 2) + 
     CASE WHEN PatIndex('%TFT%', a) > 0 THEN 'in TFT' 
      ELSE 'in' 
     END  
FROM test; 

demo

更新:

UPDATE test SET a = (substring(a, 0, LEN(a) - PatIndex('%[0-9]%', REVERSE(a)) + 2) + 
      CASE WHEN PatIndex('%TFT%', a) > 0 THEN 'in TFT' 
       ELSE 'in' 
      END) 

这是非常复杂的,不仅一个NUM BER。也许你可以使用(为每种类型的创建条件):

SELECT CASE WHEN PatIndex('%[0-9][0-9].[0-9]-TFT%', a) > 0 THEN replace(a, '-TFT', 'in TFT') 
      WHEN PatIndex('%[0-9][0-9].[0-9]TFT%', a) > 0 THEN replace(a, 'TFT', 'in TFT') 
      WHEN PatIndex('%[0-9][0-9].[0-9]-inch%', a) > 0 THEN replace(a, '-inch', 'in') 
      WHEN PatIndex('%[0-9][0-9].[0-9]-in%', a) > 0 THEN replace(a, '-in', 'in') 
      WHEN PatIndex('%[0-9][0-9].[0-9]"%', a) > 0 THEN replace(a, '"', 'in') 
      else a 
     end 
from test 

demo2

也许这可以帮助:SQL Server 2000中

+0

我面临的问题就在这里 –

+0

Regular Expressions in T-SQL这是不同的问题! – slavoo