1

動的にパラメーター化された SQL クエリを作成するアプリケーションがあります。次のクエリは、「"="... の近くで構文エラー」という内部例外を返します。

パラメータを列名に割り当てる方法だと思いますが、よくわかりません。コードは次のとおりです。

SELECT TOP 50 77 AS Repository, DocID, LastFileDate, ImageCount,
 LockedUserID,   DocClass, Offline, FileType, OrigFileName, C_CredCardSSN, C_CredCardName,C_CredCardDocType, C_CredCardDocDate, C_CredCardStatus 

FROM D77 

WHERE C_CredCardSSN 

LIKE C_CredCardSSN = @sp1% 

ORDER BY C_CredCardSSN,C_CredCardName

編集:みんなに感謝します。これらの回答はすべて役に立ちました。=)

4

4 に答える 4

5

試してみてください

WHERE C_CredCardSSN LIKE @sp1

また

WHERE C_CredCardSSN LIKE @sp1+'%'

そこに「%」があった理由によって異なります (私が見逃していた「%」を指摘してくれた Joel Coehoorn のコメントに感謝します)。

または(あなたのコメントに応じて)たぶん:

WHERE C_CredCardSSN LIKE ''+@sp1
于 2009-03-26T19:53:42.040 に答える
4

LIKE ステートメントは次のようになります。

WHERE C_CredCardSSN LIKE @sp1 + '%'
于 2009-03-26T19:57:23.780 に答える
2

これを試して:

WHERE C_CredCardSSN like @sp1 + '%'

最初の数文字が正しい場合にのみ、C_CredCardSSN が検出されます。その値内で何かを見つけるには、次のようにしてみてください

WHERE C_CredCardSSN like '%' + @sp1 + '%'
于 2009-03-26T19:57:34.870 に答える
1

クエリにパラメーターとして追加する前に、テキストに「%」を追加してみてください。

SqlParameter p = new SqlParameter("@sp1");
p.value = C_CredCardSSNText + "%";
于 2009-03-26T20:37:56.227 に答える