2011-06-14 3 views
2

나는 SQL 문을 가지고있다. 그 기록의 72 개는 MEA_로 시작하는 MerchantSKU를 가지고 있습니다. MEA_ %로 검색 할 때 아무 것도 얻지 못합니다. ACD_에서 시작하는 레코드가 약 100 개 있습니다. ACD_ %로 쿼리 할 때 10 개의 레코드가 있습니다. 내 프로그램을 사용했는지 여부에 관계없이이 데이터를 표시하거나 db에 대해 직접 쿼리를 실행하려고합니다.쿼리 작동하지

inventory.AmazonSKUsDataTable builder = i.GetbySKU(sellersku);

전화 : 턴에있는이 List<string> 's의 몇 구축이 함수를 호출

s.createdisplay(txtSellerSku.Text.Trim()+"_%");

:

내가 내 GUI에서 함수를 호출이 실행하려면 이 함수는 실제로 내 쿼리를 실행하는 내 bll에서 :

그래서 내 질문에 그 쿼리가 작동하지 않는 이유는 무엇입니까?

편집 : 여기 내 데이터 LIKE 비교

MerchantID MerchantSKU Date TotalQty SoldIn30Days ASIN SELECT ASIN, Date, DateSoldActualized FNSKU ItemName MaxShipmentDateAllSkus MaxShipmentDateThisSKU ItemName Rank Price Amazon

A1B7M9EQGNCLQA MEA_89930_C6.39 6/3/2011 6:35:07 PM 47 6/3/2011 6:35:07 PM 0 B0020OWVDS 6/3/2011 6:35:07 PM 6/3/2011 6:35:07 PM X0006J5C9F NULL NULL Medela TheraShells Breast Shells #89930 [Baby Product] 8,902 Baby 24.99 F

A1B7M9EQGNCLQA MEA_89973_C2.60 5/10/2011 12:00:00 AM 69 5/15/2011 12:00:00 AM 37 B00006FWVO 5/15/2011 12:00:00 AM 5/8/2011 12:00:00 AM B00006FWVO NULL NULL Medela Disposable Nursing Bra Pads - 30-pk [Baby Product] 2,603 Baby 9.07 F

A1B7M9EQGNCLQA MEA_89974 5/10/2011 12:00:00 AM 3 5/15/2011 12:00:00 AM 52 B00006FWVR 5/15/2011 12:00:00 AM 5/2/2011 12:00:00 AM B00006FWVR NULL NULL Medela Disposable Nursing Bra Pads - 60-pk. [Baby Product] 734 Baby 12.01 F

+0

@yosef 20k 레코드는 작은 데이터베이스입니다 –

답변

5

_ 문자가 SQL에서 "하나 개의 임의 문자로 대체"와일드 카드입니다 - 많은 DOS/Windows의 ?처럼 .

.. WHERE MerchantSKU LIKE 'MEA%'을 시도해보십시오. 지금 다시 볼 수 있나요? 당신은 밑줄을 사용해야하는 경우

, 대괄호로 퍼팅 시도 :

.. WHERE MerchantSKU LIKE 'MEA[_]%' 

업데이트 :이 문제를 재현 할 수없는 - 적어도 SQL 서버 수준에없는 -이 직접 시도 :

DECLARE @merchant TABLE (MerchantID VARCHAR(50), MerchantSKU VARCHAR(50), TotalQty INT) 

INSERT INTO @merchant 
VALUES('A1B7M9EQGNCLQA', 'MEA_89930_C6.39', 47), 
('A1B7M9EQGNCLQA', 'MEA_89973_C2.60', 69), 
('A1B7M9EQGNCLQA', 'MEA_89974', 3), 
('X1B7M9EQGNCLQA', 'MEB_89930_C6.39', 4711), 
('X1B7M9EQGNCLQA', 'MEF_89930_C6.39', 42), 
('X1B7M9EQGNCLQA', 'MEZ_89930_C6.39', 7) 

SELECT * 
FROM @merchant 
WHERE MerchantSKU LIKE 'MEA[_]%' 

내 테스트에 따르면 적절한 행이 모두 검색되어 반환됩니다. 나는 코드에 실제로 이 "물고기 같아"라고하는 SQL 쿼리를 호출하고 이러한 문제를 일으키는 것으로 의심합니다. SQL 문은 유효하고 작동합니다.

+0

여기는 제거하거나 이스케이프하면 내 결과가 변경되지 않는 독특한 부분입니다. –

+0

일부 행을 보여 주었는데, 전체 쿼리 –

+0

이 무슨 뜻인지 잘 모르겠습니다. 코드를 따를 것입니다. –

0

아래 구조와 같은 매개 변수화 된 쿼리를 사용할 수 있습니다.밑줄을 대괄호로 묶거나 따옴표로 작은 따옴표에 연결할 필요가 없습니다.

using (System.Data.SqlClient.SqlConnection con = new SqlConnection("YourConnection string")) { 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    string expression = "Parameter value"; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "Your Stored Procedure"; 
    cmd.Parameters.Add("Your Parameter Name", 
       SqlDbType.VarChar).Value = expression;  
    cmd.Connection = con; 
    using (IDataReader dr = cmd.ExecuteReader()) 
    { 
     if (dr.Read()) 
     { 
     } 
    } 
} 
관련 문제