SQL:从 SELECT 语句返回的所有条目中删除部分字符串

Posted

技术标签:

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

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

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

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

编辑 1:

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

【问题讨论】:

您使用的是什么关系型数据库?字符串函数各不相同。这可能也不是如何在其中逃避% SQL Server 2012 您的 select 语句返回所有以 20 结尾的 URL。 MSDN: LIKE – Using Wildcard Characters As Literals 【参考方案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'

【讨论】:

以上是关于SQL:从 SELECT 语句返回的所有条目中删除部分字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用sql语句在应用程序(客户端)中获取行号

SQL server select语句用于选择另一列的重复条目的ID

SQL - 选择两个字符串行之间的所有行

删除sql中的所有表条目[重复]

mybatis之映射器(select)

SQL Server中怎样可以从SELECT语句的结果集中删除重复行