2015-12-02 55 views
0

我一直負責查找零件號匹配問題,其基本信息有幾個不同的範圍和零件號的不同模式;例如0-732-012可能存儲在數據庫中,但用戶可能使用07320120.732.012進行搜索,也可能是在某些情況下,部件號本身已添加錯誤(因此也會有0732012作爲有效條目)。SQL Server零件號搜索nvarchar上可能的變化

也有一些字母數字部分編號混合在一起,例如0732012KG

我的問題是這樣的,是否有檢查數字代碼的有效方法?要麼嘗試匹配時剝離或忽略非數字值?

數據存儲在SQL Server 2008中,所以它應該具有RegEx的容量。

+0

有很多方法。首先,數據庫中的數字是如何存儲的?阿爾法總是在零件編號的末尾?有關我如何存儲號碼的所有細節。客戶或搜索dat的人也會搜索0-732-012或0.732.012,或者可能是07-320-12或0732.0.12或任何變體? –

+0

我會確保數據正常化並且將來以正確的格式保存。這樣,許多問題首先不會發生。 – Jan

+0

對不起,應該說,數字存儲爲nVarchar(255)值,我已經過了一次雙重檢查,阿爾法可以出現在代碼中的不同點上(具有不同零件編號系統的不同製造商) 至於變化從搜索值,是的 - 但我要去除任何空格和特殊字符,因爲我認爲應該使事情更容易,這只是給了我一個匹配的想法.... –

回答

0

這是我會做的。 從條目和字段級別中刪除所有破折號,空格,特殊字符(僅用於比較)。 比使用類似的要快得多。

+0

有趣的是,我剛剛得出同樣的結論,所以我已經開始了一個添加新列並清理的過程。 –

+0

@Chris M我最初的直覺就是在不添加列的情況下做到這一點。但如果你的表是巨大的,並且需要在乾淨的列上添加索引,那麼是的...如果它不會導致任何問題,我還會添加一個列。 – JohnG

+0

這是300K +記錄,因此每次運行檢查時都會在每次運行搜索時在服務器上產生不必要的負載。 我已經添加了額外的列和迄今它似乎沒有問題的工作,所以我要關閉這個問題。 –