2016-06-02 10 views
0

Hallo Ich habe eine Auswahl, die gut funktioniert, wo ich CHARINDEX auf eine Varchar-Spalte verwenden, aber wenn ich es auf eine Integer-Spalte versuche, bekomme ich den folgenden Fehler;CHARINDEX mit Integer

Der Argumentdatentyp int ist ungültig für das Argument 1 der Funktion charindex.

Im Folgenden habe ich beide Abfragen aufgelistet.

stremail ist varchar intEmployeeID in integer

**below returns results as aspected** 
SELECT intEmployeeID 
FROM [dbo].[tblEmployees] 
WHERE CHARINDEX(',' + strEmail + ',', ',' + REPLACE('[email protected], [email protected]', ' ', '') + ',') > 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 

Jede Hilfe wäre sehr dankbar.

+0

Obwohl die ersten 2 Antworten mir geholfen haben, habe ich die Antwort verwendet Er wird von @Matt bereitgestellt. Danke, – raymantle

Antwort

1
SELECT intEmployeeID 
FROM [dbo].[tblEmployees] 
WHERE CHARINDEX(',' + cast(intEmployeeID as nvarchar(max)) + ',', ',' + REPLACE('1, 2', ' ', '') + ',') > 0 
+0

Danke @Matt Ich habe deine Antwort verwendet. – raymantle

1
+ cast(intEmployeeID as varchar)+ 

Guss intEmployeeID als varchar

1

Sie müssen explizit die ganze Zahl in eine Zeichenfolge konvertieren, sonst kompiliert es die + Operatoren als Integer-Addition statt String-Verkettung:

CHARINDEX(',' + CONVERT(VARCHAR(10),intEmployeeID) + ',', ',' + REPLACE('1, 2', ' ', '') + ',')