0

嗨,我有一个选择,它在我在 varchar 列上使用 CHARINDEX 时效果很好,但是当我在整数列上尝试它时,我收到以下错误;

参数数据类型 int 对 charindex 函数的参数 1 无效。

下面我列出了这两个查询。

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
+ cast(intEmployeeID as varchar)+ 

将 intEmployeeID 转换为 varchar

于 2016-06-02T17:41:56.123 回答
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 回答