如何替换分号

hen*_*ron 9 sql-server replace sql-server-2005

我有一个SQL SELECT查询,它从我的数据库中获取一些数据.我需要在SELECT查询中替换包含分号的某个单词.正是这样:

REPLACE(Table.Field,'"','') AS Field1
Run Code Online (Sandbox Code Playgroud)

我正在读的错误

字符串'"'后面的未闭合引号.

所以我认为分号正在终止查询.我怎么能逃脱那个分号?

我试过反斜杠并使用双引号.

根据要求提供一些样本数据和预期输出


样本数据

Field
"Hello"
"Goodbye"
Run Code Online (Sandbox Code Playgroud)

预期产出

Field1
Hello
Goodbye
Run Code Online (Sandbox Code Playgroud)

完整查询

SELECT REPLACE(Table.Name,';','') AS Name,
    SUM(Table.Quantity) AS Quantity, 
    SUM(Table.Price*Table.Quantity) AS Price 
FROM Table 
GROUP BY Name
Run Code Online (Sandbox Code Playgroud)

Vla*_*nov 12

;符号不终止查询,它不应该被转义,如果它是字符串常量(单引号括起来的文本的一部分').

这是一个完整的示例,演示它在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;
Run Code Online (Sandbox Code Playgroud)

这是结果集:

Name                   ReplacedName
----                   ------------
Field                  Field
"Hello"      Hello
"Goodbye"    Goodbye
Run Code Online (Sandbox Code Playgroud)

您没有提供有关如何构造和执行查询的所有详细信息,因此我猜测.它看起来像你:

  • 动态构建查询文本
  • 使用一些基于Web的工具/语言/技术
  • 您使用的基于Web的文本处理工具/语言将SQL查询的文本解析为HTML,并干扰结果.首先,它改变""符号.
  • 在所有这些处理过程中,您最终会'在SQL文本中找到不匹配的符号.它可能来自您从数据库中存储的值连接到查询的用户输入.
  • 它与;符号无关.您的错误消息明确指出符号'后缺少匹配的引号(即)".

要了解发生了什么,您应该打印出发送到服务器的实际SQL查询的文本.一旦你拥有它,它应该变得明显出错.我不认为您在问题中提出的完整查询是您尝试运行的真实查询.它有语法错误.所以,首先得到真实的东西.


Pra*_*ukh 5

这对我来说很好

declare @a as nvarchar(50) = '"Hello"'
select REPLACE(@a,'"','') AS Field1

declare @b as nvarchar(50) = '"Goodbye"'
select REPLACE(@b,'"','') AS Field1
Run Code Online (Sandbox Code Playgroud)

错误消息显示未闭合的引号?

在你的几个领域你有单引号吗?在这种情况下,您可以首先替换它们,如下所示

REPLACE(Table.Field,'''','') AS Field1
Run Code Online (Sandbox Code Playgroud)

让我知道你需要更多的帮助.