2016-06-02 2 views
0

Привет У меня есть выбор, который отлично работает, когда я использую CHARINDEX в столбце varchar, но когда я пытаюсь использовать его в целочисленном столбце, я получаю следующую ошибку;CHARINDEX с целым числом

Тип аргумента int недопустим для аргумента 1 функции charindex.

Ниже я перечислил оба запроса.

stremail является VARCHAR intEmployeeID в целочисленном

**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 

Любая помощь будет наиболее признательна.

+0

Даже если первые 2 ответа помогли мне, я использовал answ er, предоставленный компанией @Matt. Спасибо, – raymantle

ответ

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

Спасибо @Matt Я использовал ваш ответ. – raymantle

1
+ cast(intEmployeeID as varchar)+ 

В ролях intEmployeeID, как VARCHAR

1

Вы должны явно преобразовать целое число в строку символов, в противном случае он компилирует + операторы, как целого дополнения вместо конкатенации:

CHARINDEX(',' + CONVERT(VARCHAR(10),intEmployeeID) + ',', ',' + REPLACE('1, 2', ' ', '') + ',') 
Смежные вопросы