【问题标题】:Need to trim blank space in oracle需要在oracle中修剪空白
【发布时间】:2023-03-03 10:23:01
【问题描述】:

无法修剪表格中以下数据中的空白。列数据类型为 VARCHAR2(650 CHAR)。我尝试了修剪功能来消除空格。但这对我不起作用。

我的表中的数据:

'xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14   '
'xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14       '
'xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14   '

我想像下面这样修剪数据

'xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14'
'xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14'
'xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14'

你能帮我解决这个问题吗?

【问题讨论】:

  • 不工作不是借口。显示您到目前为止尝试过的内容。
  • 你如何确定有尾随空格?您使用什么查询或工具来查看它们?

标签: sql oracle plsql oracle11g oracle10g


【解决方案1】:

使用Trim函数

select Trim(trailing ' ' from 'xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14   ') from dual

或使用Rtrim

select RTrim('xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14   ') from dual

【讨论】:

  • 不,如果相同数据存在于具有相同数据类型的表中,那么它对我不起作用
  • 可能你的栏目没有空格,可能有稀有字符
  • 它不起作用.. 有没有办法只从字符串中获取单独的第二个日期。
  • 可以,使用 regexp_substr
  • @spyga ascii 524,所以,看起来你的字符串末尾没有空格
【解决方案2】:

如果那里有其他空白字符(如制表符),我会使用 REGEXP_REPLACE()

SELECT REGEXP_REPLACE(mydata, '\s+$') AS mydata
  FROM mytable

希望这会有所帮助。如果TRIM() 不起作用,那么我怀疑您的结尾不是空格。

如果您知道数据将以数字结尾,您还可以尝试以下操作:

SELECT REGEXP_REPLACE(mydata, '\D+$') AS mydata
  FROM mytable

正则表达式中的\D 匹配除数字以外的所有内容,因此任何不是数字0-9 的尾随字符都将被修剪。

【讨论】:

  • 我无法解释为什么它不起作用,你能举个例子吗?请参阅此处的 SQL Fiddle:sqlfiddle.com/#!4/d41d8/39515 - 修剪尾随字符。
【解决方案3】:

我们也可以使用下面的方法修剪左右两边的空格

SELECT LTrim(RTrim('xxxxxxxxxx yyyyyyyyy - 12/7/14 - 12/13/14   ')) FROM dual

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 2013-10-27
    • 1970-01-01
    • 2018-08-26
    • 2017-03-16
    • 1970-01-01
    • 2012-08-31
    • 2010-11-14
    相关资源
    最近更新 更多