【问题标题】:How to Remove Empty Strings如何删除空字符串
【发布时间】:2019-09-04 14:11:34
【问题描述】:

我正在尝试找到一种方法来修剪或删除看似空字符串中的空格,这样当我查找最小值时,我会得到带有字符的结果,而不是带有空格的空字符串。

最初我尝试排除空字段( !="" )但是由于空字符串包含空格,因此从技术上讲它不是空字符串,所以我尝试了 Trimming 并且仍然无法获得我需要的结果集。

select trim(Field_1) as Field_1
from Table_1
where Field_Date between '2019-08-01' and '2019-08-31'
and Field_1 != ""
order by Field_1 asc

我得到的结果集是:

  • 空白(6 个空格)
  • 空白(6 个空格)
  • 空白(6 个空格)
  • ABC
  • DEF
  • GHI

我需要的结果集

  • ABC
  • DEF
  • GHI

【问题讨论】:

    标签: sql string hadoop trim


    【解决方案1】:

    看起来您的 WHERE 条件没有被修剪,而您的 SELECT 被修剪。

    在您的情况下,您使用 Field_1 作为条件中的参考,这似乎是指表的列,而不是您通过说 trim(Field_1) as Field_1 创建的别名

    如果您只想要没有空格的结果,则不需要trim() 您选择的列,因为您的条件强制您的结果不能有空格,那么为什么不在您的第二个条件中使用trim()

    这样,Field_1 的每条记录的值都将被修剪首先,然后与“”进行比较。

    这样的事情怎么样?

    select Field_1
    from Table_1
    where Field_Date between '2019-08-01' and '2019-08-31'
    and trim(Field_1) != ""
    order by Field_1 asc
    

    【讨论】:

    • 太好了,这行得通。非常感谢您的解决方案和解释。
    • @ace123 很高兴听到这个消息!
    【解决方案2】:
    select Field_1
    from Table_1
    where Field_Date between '2019-08-01' and '2019-08-31'
    and Field_1 not like '% %'
    order by Field_1 asc
    

    【讨论】:

      【解决方案3】:

      就我个人而言,我首先会看看为什么你会得到空字符串。 如果它们应该是空记录集,那么您肯定有一些代码在某处插入了不必要的空格。

      修复此问题将阻止任何空白语句出现在 SQL 搜索中,因为它们将返回为空。这也将为您将来节省空间,因为数据库中的空白可能会很痛苦!

      但是,如果您仍在寻找一种方法来替换代码中的空格,我建议您阅读这篇文章: REPLACE Multiple Spaces with one

      我相信这会让你走上正轨。

      【讨论】:

      • 好点。谢谢你
      • 没问题,我已经编辑了答案以提供替换空格的链接,我相信这可能会对您当前的问题有所帮助。
      猜你喜欢
      • 2018-09-27
      • 1970-01-01
      • 2014-07-04
      • 2011-09-30
      • 2021-09-04
      • 2020-02-02
      • 2019-06-14
      • 2011-03-24
      相关资源
      最近更新 更多