【问题标题】:How to Post a SQL String With Quotes?如何发布带引号的 SQL 字符串?
【发布时间】:2015-10-04 22:54:13
【问题描述】:

这似乎是一个已经被回答过一百万次的问题,但是搜索一下只会将单引号替换为双引号。

问题是我有一个包含大量单引号的文件。有没有办法按原样插入字符串,而单引号不会引发错误。有包装吗?

这是纯 SQL 的,我不需要从后端保存这个字符串或任何东西。我需要一个 SQL 命令。

编辑:只是为了澄清-我要发布的字符串是一个文档,采用 html 格式,带有大量双引号和单引号,单独转义每个引号将需要足够的时间来保证以另一种格式保存数据,我宁愿不这样做。

【问题讨论】:

  • 什么意思,你有文件吗?它是您尝试导入的平面文件吗?
  • 这是一个每次出现的解决方案,询问是否有任何全局。
  • 单独逃跑?真的你无权访问可以进行批量替换的编辑器吗?
  • @Blam,你知道“f”键与“ctrl”的距离很远吗?我不是体操运动员。

标签: sql tsql


【解决方案1】:

如果您有一个可供 SQL Server 访问的文件,您可以使用OPENROWSET 将内容读入到变量中。例如,要读取位于C:\drop\demo.html 的 Unicode 文本文件:

DECLARE @DocumentText nvarchar(MAX);

SELECT @DocumentText = BulkColumn
FROM OPENROWSET(BULK 'C:\drop\demo.html', SINGLE_NCLOB) file;

INSERT INTO Files (Column) VALUES (@DocumentText);

【讨论】:

    【解决方案2】:

    读取文件,解析它,然后做

        if(string.charAt(I))=="'"... charAt(I)="";
    

    【讨论】:

      【解决方案3】:

      你能用两个单引号代替单引号吗?这就是 SQL Server 转义字符串中单引号的方式。

      declare @test_string nvarchar(max) = 'string with a single '' quote in it';
      print @test_string
      
      string with a single ' quote in it
      

      【讨论】:

      • 熟悉该解决方案。想在不触及每一个引号的情况下查看是否还有其他内容。
      • @Mitch:是的,看起来最终会是这样。不知何故,似乎有一个“忽略所有单引号”命令是有道理的。
      • 不。您发送的字符串是有效的 SQL(没有嵌入引号),您应该对其进行参数化。 (OPENROWSET(BULK'filename', SINGLE_BLOB)之类的使用除外)
      • 你是如何将这个字符串从文件中获取到 SQL 中的?您可能可以在读取文件时添加替换命令。
      • 只读用户协议,所以我只是在极少数情况下手动保存。
      【解决方案4】:

      你需要使用双引号:

      select 'it''s a double quote'
      

      将返回:

      it's a double quote
      

      【讨论】:

      • 熟悉该解决方案。想在不触及每一个引号的情况下查看是否还有其他内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 2023-01-13
      相关资源
      最近更新 更多