【问题标题】:Remove extra spaces if more than one space through vb.net Oracle query如果通过 vb.net Oracle 查询超过一个空格,则删除多余的空格
【发布时间】:2013-10-08 14:24:25
【问题描述】:

只是寻找另一种方法来删除整个查询中的任何多余空格(> 1)。我正在从 Excel 电子表格中获取我的 Oracle 查询的信息,因此由于用户错误等原因肯定会有一些多余的零,因此当我从 excel 中获取信息时,它会在某些值之后有 2 个有时 3 个额外的空格所以当我们通过应用程序查询它时,我们不会得到任何从 Oracle 返回的记录。我已经尝试过 Trim(ds.Tables.Item(0).Rows.Item(k).Item(i).ToString.ToUpper) 但这并没有删除某些值中的额外空格。是否有一些我不知道的 SQL 语句或者 Trim 不起作用的其他原因?

编辑:写替换函数不正确。

Original: string.Replace("  ", " ")
New: string = string.replace("  ", " ")

【问题讨论】:

    标签: vb.net winforms oracle


    【解决方案1】:

    请改用String.Replace(" ", String.Empty)Trim 只删除前导和尾随空格。

    【讨论】:

    • 嗨,Douglas,我也试过这个,但运气不好。我可以证明它看到了 cell(.contains(" ")) 中的两个空格,但没有将两个空格替换为一个。我试过用一个空格替换它,甚至尝试了你的建议并将它放到一个空字符串中,看起来它根本没有改变字符串
    • 你确定这是一个空格而不是其他字符吗?
    • 还能是什么?我可以检查并验证它是否有 2 个空格,我在查询中使用的只有一个空格的所有其他值都不会进入我用来检查空格数的 if 语句
    【解决方案2】:

    在 Oracle 方面,您可以使用 REGEXP_REPLACE function,但您需要将其应用于要从中删除多余空格的每一列:

    SELECT
      REGEXP_REPLACE(myCol1, ' {2,}', ' ') AS myCleanCol1,
      REGEXP_REPLACE(myCol2, ' {2,}', ' ') AS myCleanCol2,
    FROM myTable
    

    此处的示例查找所有出现的两个或多个空格(即第二个参数)并将它们替换为单个空格(第三个参数)。

    【讨论】:

      【解决方案3】:

      您可以使用 REGEXP_REPLACE

      可能是这样的:

      regexp_replace(your_column, '\s{2,}', '')
      

      Here is a sqlfiddle demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-03
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        • 2019-12-22
        • 2016-05-19
        • 2012-01-24
        相关资源
        最近更新 更多