2013-07-26 96 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