Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在模运算符SQL Server中,数据类型varchar和varchar不兼容_Sql_Sql Server_Tsql - Fatal编程技术网

在模运算符SQL Server中,数据类型varchar和varchar不兼容

在模运算符SQL Server中,数据类型varchar和varchar不兼容,sql,sql-server,tsql,Sql,Sql Server,Tsql,我得到这个错误: 模运算符中的数据类型varchar和varchar不兼容 运行此代码时 ' Number LIKE '%' + @search + '%' '; 数字是一个整数,此代码段显示在“”中;由于动态透视语句。你知道我该怎么做吗?谢谢你大概有这样的东西: SELECT ' Number LIKE '%' + @search + '%' '; SELECT ' Number LIKE ''%'' + @search + ''%'' '; 如果是这样,字符串中就有单引号。因此,“字符

我得到这个错误:

模运算符中的数据类型varchar和varchar不兼容

运行此代码时

' Number LIKE '%' + @search + '%' ';

数字是一个整数,此代码段显示在“”中;由于动态透视语句。你知道我该怎么做吗?谢谢

你大概有这样的东西:

SELECT ' Number LIKE '%' + @search + '%' ';
SELECT ' Number LIKE ''%'' + @search + ''%'' ';
如果是这样,字符串中就有单引号。因此,“字符串”被解释为:

SELECT (' Number LIKE ') % (' + @search + ') % (' ');
%
是模运算符。这就是你的错误

为了将单引号放在字符串中,需要将它们加倍。大概是这样的:

SELECT ' Number LIKE '%' + @search + '%' ';
SELECT ' Number LIKE ''%'' + @search + ''%'' ';

你确定你需要这些外部引号吗

Number LIKE '%' + @search + '%'
否则,您将需要转义内部引号。试试这个:

'Number LIKE ''%'' + @search + ''%'''

因为
%
在SQl Server中是一个变量,它被解释为一个变量,因为要在字符串中插入quto,您需要将它加倍,正如其他答案所建议的那样

其他解决办法是:

'CHARINDEX(' + @search + ', Number) > 0'

我总是倾向于在
上使用它,比如将
运算符与
%someString%
一起使用。两者都确定另一个中是否有字符串。

请显示一个更完整的SQL语句。如果您的百分号位于搜索参数周围,即
其中Foo类似于“%bar%”
并且您得到了一个模运算符错误,则您的报价不匹配。阅读并显示一个。您是否可以使用一个IDE对字符串文本进行颜色编码,以便您自己可以看到问题?