Sql server 如何替换分号?
我有一个SQLSql server 如何替换分号?,sql-server,replace,sql-server-2005,Sql Server,Replace,Sql Server 2005,我有一个SQLSELECT查询,它正在从我的数据库中获取一些数据。我需要替换我的SELECT查询中包含分号的某个单词。正是这样: REPLACE(Table.Field,'"','') AS Field1 我收到的错误是 字符串“”后未闭合的引号 因此,我认为分号正在终止查询。如何转义该分号 我试着用反斜杠和双引号 根据要求提供一些样本数据和预期输出 样本数据 预期产量 完整查询 ;符号不会终止查询,如果它是字符串文本的一部分(用单引号括起来的文本),则不应转义它 下面
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的文本中最终会出现不匹配的
符号。它可能来自用户输入,您可以从数据库中存储的值连接到查询“
- 它与
符号无关。您的错误消息清楚地表明;
符号后缺少匹配的引号(即“
)”
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, ';', '.'), '".', '') As Field1