2013-03-06 127 views
2

我試圖更新我的產品數據庫,並在一些產品編號被簡化後找到重複項。MySQL REGEXP不能正常工作

這裏是我想不工作:

SELECT b.Id as OLDID, c.Id as NEWID 
FROM productdata b, productdata c 
WHERE b.ProdNum REGEXP CONCAT('^', c.ProdNum, '(\-|\s)[a-zA-Z0-9]+(\-|\s)[a-zA-Z0-9]+') 

老產品編號:WR-101 3日(以及WR-101 1天等)

新產品編號:WR-101

所以基本上我需要一個where子句,將新產品編號與其上有「1 Day」,「3 Day」等舊產品編號相匹配。

感謝您的幫助。

+0

我知道正則表達式是比它需要更加複雜,但我確定有額外的資源,我想一個能捕獲超過這一特定問題更多。 – EricImprint 2013-03-06 00:04:27

回答

3

對於空格,MySQL的正則表達式不支持\s。你需要使用[[:space:]]。你也不需要逃避破折號:

(-|[[:space:]])[a-zA-Z0-9]+(-|[[:space:]])[a-zA-Z0-9]+ 
+2

+1您可以用'[[:space:]]'代替'( - | [[:space:]]'進一步簡化' – 2013-03-06 00:17:49

+0

謝謝你們,這兩個選項都有效。 – EricImprint 2013-03-06 00:20:59