【问题标题】:SQL wont let me replace a quote in SELECT statementSQL 不允许我替换 SELECT 语句中的引号
【发布时间】:2014-08-06 20:05:47
【问题描述】:

我正在尝试从我的 SQL 导出的列中删除双引号 ",但在研究了正确的方法后出现错误...这是我尝试过的方法之一...

SELECT 
   '293453' as custnum, 
   REPLACE(Orders.Order_Comments, '"', '') as FULFILL1, 
   OrderDetails.OrderID as OrderID2, etc.

产生的错误是:

您的 SQL 无效:参数数据类型文本对于替换函数的参数 1 无效。

【问题讨论】:

  • order_comments 字段的数据类型是什么? t-sql replace() function... 我想知道如果该字段曾经是 null... 会发生什么?
  • 这个“293453”是什么??
  • @prashantthakre,这是一个字符串文字 :)。
  • 那么首先你应该从你的选择语句中删除'293453' as custnum,
  • @prashantthakre 不,他对字符串文字的处理完全没问题

标签: sql


【解决方案1】:

您的Orders.Order_Comments 列的类型为text。您不能将 REPLACE() 函数用于该数据类型。它仅适用于 char/varchar/nchar/nvarchar。

要解决此问题,最好的办法是更改表以使用 varchar(max) 列。无论如何,text 类型已被弃用。但是,如果这不是一个选项,则必须在查询中强制转换:

REPLACE(CAST(Orders.Order_Comments as varchar(max)), '"', '')

请注意,这可能非常很慢。

【讨论】:

    【解决方案2】:

    看看这个答案:SQL Server find and replace in TEXT field

    text 数据类型不适用于replace,因此您需要将其转换为 VARCHAR(MAX)

    REPLACE(CAST(Orders.Order_Comments AS VARCHAR(MAX)), '"', '')
    

    【讨论】:

      【解决方案3】:

      试试这个:

      select  REPLACE(isnull(Orders.Order_Comments,''), '"', '') as order_comments
      from    orders 
      

      【讨论】:

        猜你喜欢
        • 2011-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-17
        • 1970-01-01
        • 2012-02-18
        • 2022-11-25
        • 2018-06-09
        相关资源
        最近更新 更多