【发布时间】:2018-01-25 07:30:32
【问题描述】:
我有一个表列(nvarchar 类型),其中包含一个条目“XYZ INT'ABC”,我在 where 子句的存储过程中使用此列。因此,在 where 子句中添加条件时,应进行如下检查:
select * from tableName where ColumnName = 'XYZ INT''ABC';
从 VB.net 代码向 SP 传递参数时,参数正确传递,如上面的选择查询所示。但是 SP 使用以下查询进行搜索,因此我没有得到所提到的 where 子句的所需输出。
select * from tableName where ColumnName = 'XYZ INT''''ABC';
请帮忙。提前致谢。
【问题讨论】:
-
请出示VB.NET代码
-
我在 Vb.net 代码的过程参数中传递了正确的值。但是当我从 SQL 探查器中检查时,存储过程执行语句(XYZ INT''''ABC)中传递了错误的值。
-
在您的 VB 代码中,您不需要转义单引号,因此您的 VB 字符串应该看起来像
"XYZ INT'ABC",当传递给 sql server 以转义单引号时,这将加倍,您最终会得到'XYZ INT''ABC'在 sql server 中 -
看来你传递的字符串已经加了双引号,按原样传递
-
是的...我将字符串从 XYZ INT'ABC 转换为 XYZ INT''ABC,然后将其分配给 Vb.net 代码中的参数值。将按照建议尝试解决方案。
标签: sql-server vb.net stored-procedures nvarchar single-quotes