我有一个sql SELECT查询从我的数据库抓取一些数据.我需要在我的SELECT查询中替换一个包含分号的单词.正是这样:
REPLACE(Table.Field,'"','') AS Field1
我读到的错误
Unclosed quotation mark after the character string ‘”‘.
所以我认为分号正在终止查询.我怎么能逃脱这个分号?
我尝试了反斜杠并使用双引号.
根据要求提供一些样品数据和预期输出
样品数据
Field "Hello" "Goodbye"
预期产量
Field1 Hello Goodbye
完全查询
SELECT REPLACE(Table.Name,';','') AS Name,SUM(Table.Quantity) AS Quantity,SUM(Table.Price*Table.Quantity) AS Price FROM Table GROUP BY Name
解决方法
的;符号不会终止查询,并且不应该转义,如果它是字符串文字的一部分(文本用单引号括起来).
这是一个完整的例子,证明它在SSMS中正常工作:
CREATE TABLE #TempTable (Name varchar(50)); INSERT INTO #TempTable (Name) VALUES('Field'); INSERT INTO #TempTable (Name) VALUES('"Hello"'); INSERT INTO #TempTable (Name) VALUES('"Goodbye"'); SELECT Name,REPLACE(Name,'') AS ReplacedName FROM #TempTable; DROP TABLE #TempTable;
这是结果集:
Name ReplacedName ---- ------------ Field Field "Hello" Hello "Goodbye" Goodbye
你没有提供你如何构建和执行你的查询的所有细节,所以我有一个猜测.看起来你是:
>动态构建查询的文本
>使用一些基于Web的工具/语言/技术
>基于Web的文本处理工具/语言,您可以将SQL查询的文本解析为HTML并干扰结果.一方面,它改变和“到“符号”.
>在所有这些处理过程中,最终在sql文本中使用无与伦比的符号.它可能来自您从数据库中存储的值连接到查询的用户输入.
这与…无关符号.您的错误消息清楚地表明,在“符号”之后缺少匹配的引号(即’).
要了解发生了什么,您应该打印发送到服务器的实际SQL查询的文本.一旦你有了,应该会变得明显出了什么问题.我不认为您提出的完整查询是您正在尝试运行的真正查询.它有语法错误.所以,首先得到真正的东西.