我有一个表格列(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';
请帮忙。提前谢谢。
答案 0 :(得分:0)
你已经在评论中提出了一些建议。只是一些解释:
加倍的引号实际上不是字符串的一部分
DECLARE @SomeString VARCHAR(100) = 'With one quote''!';
您在变量中找到的字符串将为With one quote'!
。双引号只是一个语法专业,允许语句分析器查看引号是否终止字符串。像
DECLARE @SomeString VARCHAR(100) = 'With one quote'!'; --wrong!
...错误,因为字符串在quote
之后结束,!'
突然出现语法错误。
仅在单引号为字符串标记的情况下才需要此选项。在VB.Net中你有同样的问题,如果你想在你的字符串中放置一个双引号"
,但这可以在SQL中使用,如下所示:
DECLARE @SomeString VARCHAR(100) = 'With one double quote"!';
你必须考虑双折
相关且更明显的例子:
通常你会看到像这样的代码(赋值)
string SomeString = "Some text/nwith a line-break";
被翻译为(实际值)
Some text
with a line-break