2014-03-28 31 views
0

查詢產品代碼需要數據庫。 我使用的是條形碼閱讀器,代碼是內部的,所以如果與閱讀器一起閱讀,例如形式爲「S181002 $ M」,所以它將與它一起存儲。這是適當的SQL查詢?

問題是,如果用戶輸入「手工」代碼,它只是「S181002」,因此在代碼爲「S181002 $ M」的數據庫中查找不起作用。

什麼是適當的sql查詢?

最好使用laravel,但可以容納任何請求。

我嘗試這樣做:

$articles = DB :: table ('articles') -> where ('code', 'LIKE', '%' $ code '%'..) -> get(); 

但顯然 「S181002 $ M」 不是一個串或相同的字符串爲 「S181002」

你能幫忙嗎?

注:我需要避免數據預處理之前alamacenarlo例如,刪除「$ M」,因爲它會處理各種類型的代碼。

謝謝!

+0

既然你說代碼的長度有多個模式,字符和數字。當你需要閱讀器時,至少後綴「$ M」總是相同的?換句話說:在字符串的末尾(如果存在)刪除子字符串「$ M」是否足夠? – spickermann

回答

0

如果你知道這些代碼將永遠是7個字符長,你可以這樣做:

SELECT articles.* FROM articles WHERE code = SUBSTRING('S181002 $ M', 1, 7); 

另外,如果你知道「$ M」永遠是代碼後綴:

SELECT articles.* FROM articles WHERE code = REPLACE('S181002 $ M', ' $ M', ''); 
+0

某些產品的問題如此代碼,其他產品只是數字或使用其他模式。而是尋求一種通用的方式,作爲適用於產品代碼的正則表達式。謝謝! – brunocascio