Sql server 如何替换分号?

Sql server 如何替换分号?,sql-server,replace,sql-server-2005,Sql Server,Replace,Sql Server 2005,我有一个SQLSELECT查询,它正在从我的数据库中获取一些数据。我需要替换我的SELECT查询中包含分号的某个单词。正是这样: REPLACE(Table.Field,'"','') AS Field1 我收到的错误是 字符串“”后未闭合的引号 因此,我认为分号正在终止查询。如何转义该分号 我试着用反斜杠和双引号 根据要求提供一些样本数据和预期输出 样本数据 预期产量 完整查询 ;符号不会终止查询,如果它是字符串文本的一部分(用单引号括起来的文本),则不应转义它 下面

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

REPLACE(Table.Field,'"','') AS Field1
我收到的错误是

字符串“”后未闭合的引号

因此,我认为分号正在终止查询。如何转义该分号

我试着用反斜杠和双引号

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


样本数据
预期产量
完整查询
符号不会终止查询,如果它是字符串文本的一部分(用单引号括起来的文本),则不应转义它

下面是一个完整的示例,它可以在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的文本处理工具/语言将SQL查询的文本解析为HTML并干扰结果。首先,它将
    更改为
    符号
  • 在所有这些处理过程中,SQL的文本中最终会出现不匹配的
    符号。它可能来自用户输入,您可以从数据库中存储的值连接到查询
  • 它与
    符号无关。您的错误消息清楚地表明
    符号后缺少匹配的引号(即
要了解发生了什么,您应该打印出发送到服务器的实际SQL查询的文本。一旦你有了它,它应该成为明显的错误。我不认为您在问题中提出的完整查询是您试图运行的真正查询。它有语法错误。所以,先拿真货。

这对我来说很好

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

declare @b as nvarchar(50) = '"Goodbye"'
select REPLACE(@b,'"','') AS Field1
错误消息显示未关闭的引号

您的几个字段中是否有单引号? 在这种情况下,您可以按如下方式首先更换它们

REPLACE(Table.Field,'''','') AS Field1
请告诉我您需要更多帮助。

我认为这个参数是指
的一个特殊短语,它不会导致错误消息


在SQL Server中,只有一个函数类似于
QUOTENAME('character\u string'[,'quote\u character'])
这样使用:-仅用于
'
[]
-

SELECT QUOTENAME('Sample', '"') --> result is `"Sample"`
SELECT QUOTENAME('Sam"ple', '"') --> result is `"Sam""ple"`

在SQL Server中,标识符可以用
,当
设置引号时\u标识符
ON
-用于遵循ISO规则-”。当
SET QUOTED\u IDENTIFIER
OFF
时,标识符不能被引用,必须遵循标识符的所有Transact-SQL规则。文字可以用单引号或双引号分隔

我建议您使用
SET QUOTED\u IDENTIFIER OFF
,以确保您在查询中没有
之间的标识符“

注:
创建表时,
QUOTED IDENTIFIER
选项在表的元数据中始终存储为ON,即使该选项在创建表时设置为OFF


如果您使用的是SQL字符串,我建议使用以下语法:

REPLACE(Table.Field, CHAR(34), '') As Field1


@Wewesthemenance尝试过。我正在尝试替换整个文本字符串…而不仅仅是我看到的分号。您能提供一些示例数据和预期输出吗。@Wewesthemenance查看更新它在我的中运行得很好:您是说当您从SSMS的表中运行
选择替换(Table.Field,“,”)时,您会收到一条错误消息,但当您从表中运行
选择REPLACE(Table.Field,“,”)时
工作正常吗?很难相信这一点。
REPLACE(Table.Field,'''','') AS Field1
"  
    the double quote sign "
SELECT QUOTENAME('Sample', '"') --> result is `"Sample"`
SELECT QUOTENAME('Sam"ple', '"') --> result is `"Sam""ple"`
REPLACE(Table.Field, CHAR(34), '') As Field1
REPLACE(REPLACE(Table.Field, ';', '.'), '&quot.', '') As Field1