【问题标题】:How to use REPLACE with string containing apostrophe? [duplicate]如何将 REPLACE 与包含撇号的字符串一起使用? [复制]
【发布时间】:2012-12-19 17:51:43
【问题描述】:

可能重复:
Replace single quote in sql server

所以我尝试使用以下代码:

UPDATE TableName
SET FieldName = REPLACE(FieldName, 'SearchFor', 'ReplaceWith');

它非常适合我需要做的事情,除了我需要搜索的是“有效的驾驶执照”这一事实。该撇号似乎与代码不一致。我试过这样做:

'valid driver''s license'

...但这似乎也不起作用。我收到以下错误:

Argument data type text is invalid for argument 1 of replace function.

如果有人以前处理过这个问题,我希望得到一些帮助!这将节省我很多时间,而不是手动更新每条记录。 -__-

艾莉

【问题讨论】:

  • SQL Chat 中的某个人刚刚帮助了我。我需要将我的字段转换为 VARCHAR。它不喜欢它是一个文本字段。
  • 您是从代码中传递这些字符串(如 c sharp)还是在 sql server management studio 上运行?
  • 你可以用双引号将表达式括起来以转义单引号

标签: sql-server string apostrophe


【解决方案1】:

该错误会告诉您确切的问题所在。 FieldNametext 类型的列,它不适用于REPLACE 函数。尝试首先将第一个参数转换为VARCHAR(MAX),它应该可以工作。即:

UPDATE TableName
SET FieldName = REPLACE(CAST(FieldName AS VARCHAR(MAX)), 'SearchFor', 'ReplaceWith');

【讨论】:

    【解决方案2】:

    这很有趣。几分钟前我刚刚遇到了这个确切的事情。事实证明我不得不改变这个:

    更新表名 SET FieldName = REPLACE(FieldName, 'SearchFor', 'ReplaceWith');

    对此: 更新表名 SET FieldName = REPLACE(cast(FieldName as varchar(5000)), 'SearchFor', 'ReplaceWith');

    【讨论】:

      【解决方案3】:

      你必须用斜杠转义单引号。

      UPDATE TableName
      SET FieldName = REPLACE(FieldName, 'Isn\'t', 'Is not');
      

      【讨论】:

      • 在 MSSQL 中,您可以通过将撇号加倍来逃避撇号。换句话说:REPLACE(FieldName, 'Isn''t', 'Is not')
      • @SPFiredrake,我的错,出于某种原因,我认为这个问题被标记为 MySQL
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      相关资源
      最近更新 更多