2014-03-29 69 views
0

我有一个表的情况。哪里有IN运营商,但开始 - 而不是完全匹配

[ I D ] [ n a m e ] [ 2 ID] 
310000 Kikiriki 100001 
310010 Mandalina 100002 
210000 Keyboard 200001 
310020 Maouse  100003 
012001 PC   NULL 

随着SELECT * FROM Table WHERE [2 ID] IN ('310000','012001')我只得到从310000和012001.我需要与310%或012%启动所有ID的结果的结果。

AND Mat_FinDok_KontoPr2 like '310%' 
AND Mat_FinDok_KontoPr2 like '012%' 
AND Mat_FinDok_Dobavuvac LIKE '%' 
AND Mat_FinDok_TipDok LIKE '000005%' 
AND Mat_FinDok_DataDok BETWEEN '2014-01-01' AND '2014-12-31' 

Result 0 Rows 

以及与此

AND mat_findok.Mat_FinDok_KontoPr2 IN ('310000', '012001') 
AND mat_findok.Mat_FinDok_Dobavuvac LIKE '%' 
AND Mat_FinDok_Dobavuvac LIKE '%' 
AND Mat_FinDok_TipDok LIKE '000005%' 
AND Mat_FinDok_DataDok BETWEEN '2014-01-01' AND '2014-12-31' 

Result 11 Rows 

但在这里我不从012002有结果。

+0

您正在使用哪个数据库,MySQL或SQL Server? –

回答

0

那么你应该写查询以获得想要的东西:

SELECT * 
FROM Table 
WHERE id like '310%' or id like '012%'; 
3

使用LIKE%通配符:

SELECT * FROM MyTable WHERE Id LIKE '310%' OR Id LIKE '012%' 

T-SQL Documentation

MySQL Documentation

+0

正确 - 您不能将通配符与'IN'运算符一起使用。 –