2

これは簡単な質問ですが、ここで説明します。SQLステートメントを使用してVisualStudioで検索ボタンを作成しました。名と姓で機能しますが、そのような従業員IDを検索することもできます。コードは次のとおりです。

SELECT ID, fName, lName, Discription, Box 
FROM tb1 
WHERE (fName LIKE '%' + @fName + '%') OR (lName LIKE '%' + @lName + '%') OR (ID LIKE '%' + @ID + '%')

テストすると、エラーが発生します:

"Conversion failed when converting the varchar value '%' to data type int.
4

3 に答える 3

2
ID LIKE '%' + @ID + '%'

IDは整数、'%' + @ID + '%'は文字列です。本当に比較することはできません。整数は値であるか、そうでないかのどちらかです。%ワイルドカードは整数には何の意味もありません。

私はあなたがしたいことはあなたがそれの部分文字列と一致することができるように整数を文字列に変換することであると仮定しています。したがって、たとえば、「1」を検索すると、「1」を含む任意の整数(10、11、12、451など)に一致します。これを行うには、句で整数値を文字列値に変換する必要があります。WHERE

(CAST(ID AS varchar(10)) LIKE '%' + @ID + '%'

(これは、整数が10文字を超えることはないことを前提としています。必要に応じてその値を調整してください。)

于 2012-07-12T18:32:42.887 に答える
1

整数では使用できないためLIKE、 を に変換する必要がありIDますvarchar

変換するには、CASTまたはを使用できますCONVERT: http://msdn.microsoft.com/en-us/library/ms187928.aspx

元: CAST(ID as varchar)

あなたの質問:

SELECT ID, fName, lName, Discription, Box 
FROM tb1 
WHERE (fName LIKE '%' + @fName + '%') OR (lName LIKE '%' + @lName + '%') OR (CAST(ID as varchar) LIKE '%' + @ID + '%')
于 2012-07-12T18:30:43.293 に答える
1

このLIKE構文は、文字に関連付けられたデータ型とのみ互換性があります。INTタイプはこのカテゴリには該当しません。

参照: http://msdn.microsoft.com/en-us/library/ms179859.aspx

于 2012-07-12T18:31:22.013 に答える