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 语句返回的所有条目中删除部分字符串的主要内容,如果未能解决你的问题,请参考以下文章