【问题标题】:SQL: Remove part of the string from all the entries returned by the SELECT statementSQL:从 SELECT 语句返回的所有条目中删除部分字符串
【发布时间】:2017-07-30 01:22:47
【问题描述】:

以下是返回所有在其末尾包含 %20(空格)的 URL 的 select 语句:

select * from Table1 where Column1 like '%%20'

如何使用 SQL 从所有这些 URL 中删除“%20”?

编辑 1:

只有在 URL 末尾找到 '%20' 时,有没有办法删除它(将所有其他实例保存在 '%20' 中的网址)?

【问题讨论】:

标签: sql string tsql replace sql-server-2012


【解决方案1】:

当您的字段包含“%20”时,您可以删除最后 3 个字符:

select SUBSTR(Column1 ,0,LENGTH(Column1)-3 ) from Table1 where Column1 like '%%20'

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案2】:

这很简单。我假设您使用的是 Microsoft SQL Server。请尝试以下操作:

 Select SUBSTRING(Column1,  0, Len(Column1) - 2) As Column1, Column2 
 From Table1 where Column1 like '%[%]20'

在上面,我选择了 Column1,%20 将从 Column1 的末尾删除,并且也选择了 Column2。您可以选择所有列。

【讨论】:

  • where Column1 like '%%20'where Column1 like '%20' 相同。在 SQL Server 中,您可以使用 where Column1 like '%[%]20' 来匹配一个百分比。
  • @YashSaraiya - 我很高兴 :)
  • 请注意,这将在任何地方替换 %20,而不仅仅是在末尾。
  • @YashSaraiya - 更新了我的答案。它将仅从末尾替换 %20。
  • 谢谢!我将此查询用于 Dremio。我唯一需要改变的是 len() 到 char_length() 因为 len() 不受支持。
【解决方案3】:
  Select REPLACE(Column1,'%20','') From Table1 where Column1 like '%%20'

【讨论】:

    猜你喜欢
    • 2012-08-15
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多