0

こんにちは、varchar 列で CHARINDEX を使用する場合に最適な選択がありますが、整数列で試してみると、次のエラーが発生します。

charindex 関数の引数 1 の引数のデータ型 int は無効です。

以下に、両方のクエリをリストしました。

stremail は整数の varchar intEmployeeID です

**below returns results as aspected**
SELECT  intEmployeeID
FROM [dbo].[tblEmployees]
WHERE CHARINDEX(',' + strEmail + ',', ',' +  REPLACE('test@gmail.com,  test2@gmail.com', ' ', '') + ',') > 0


**below I get an error if I'm trying to select on a integer column**
SELECT  intEmployeeID
FROM [dbo].[tblEmployees]
WHERE CHARINDEX(',' + intEmployeeID + ',', ',' +  REPLACE('1, 2', ' ', '') + ',') > 0

どんな助けも最も素晴らしいでしょう。

4

3 に答える 3

1

整数を文字列に明示的に変換する必要があります。そうしないと、+演算子が文字列連結ではなく整数加算としてコンパイルされます。

CHARINDEX(',' + CONVERT(VARCHAR(10),intEmployeeID) + ',', ',' +  REPLACE('1, 2', ' ', '') + ',')
于 2016-06-02T17:41:59.887 に答える
1
SELECT  intEmployeeID
FROM [dbo].[tblEmployees]
WHERE CHARINDEX(',' + cast(intEmployeeID as nvarchar(max)) + ',', ',' +  REPLACE('1, 2', ' ', '') + ',') > 0
于 2016-06-02T17:42:07.063 に答える
1
+ cast(intEmployeeID as varchar)+ 

intEmployeeID を varchar としてキャスト

于 2016-06-02T17:41:56.123 に答える