【问题标题】:TRIM char blank trailing spaces for CSV export用于 CSV 导出的 TRIM char 空格尾随空格
【发布时间】:2019-02-19 07:01:38
【问题描述】:

我找不到这个问题的答案,我在数据库中的字段我没有写权限,由于设置大小,我没有包含少量空格。我需要在导出中对其进行修剪,但 TRIM 功能不起作用。

我试过这些:

TRIM(char(32) from foo)
TRIM(' ' from foo)
LTRIM, RTRIM

这是我的查询:

SELECT 
    TRIM(DELIVERY_NAME)
FROM
    DELIVERY_TABLE
ORDER BY
    DELIVERY_NAME

预期结果 - 'JOHN WOO'
实际结果——'JOHN WOO '

【问题讨论】:

  • TRIM 本身应该可以正常工作:dbfiddle.uk/…
  • 我认为因为它是一个 char 字段而不是一个字符串,它不完全是一个 ' ' 并且是某种特殊字符。
  • 您在这里只显示了一列,但从您的 pastebin 示例中,are you actually seeing this?问题可能只是使用colsep。如果您使用的是 SQL Developer(或 SQLcl),您还可以查看 set sqlformat csv
  • More on sqlformat. 或查看this answer 了解该选项和其他选项。 (可能重复?)

标签: sql oracle-sqldeveloper sqlplus


【解决方案1】:

请尝试

TRIM(BOTH ' ' FROM DELIVERY_NAME)
select TRIM(BOTH ' ' FROM ' Test   ') from dual
| TRIM(BOTH''FROM'TEST') | | :--------------------- | |测试 |

db小提琴here

您也可以使用REGEXP_REPLACE

select REGEXP_REPLACE(' Test  s ', '^[ \t]+|[ \t]+$','') from dual

这将删除前导和尾随空格和制表符

【讨论】:

  • , REGEXP_REPLACE(iso.DELIVERY_NAME, '\s*','') 有点工作,空格消失了,但表格的格式倾斜
  • 此外,它还删除了单词之间的空格,而不仅仅是右侧的尾随
  • set colsep ',' SELECT orh.ORDER_NO , iso.CUSTOMER_PO_NO , iso.CONSIGNMENT_NUMBER , REGEXP_REPLACE(iso.DELIVERY_NAME, '^[ \t]+|[ \t]+$','' ) , to_char(orh.DATE_DUE, 'DD/MM/RRRR') , iso.DELIVERY_STATE
  • 该代码现在以某种方式移除 colsep 并强制左右尾随 ',' 中断。
  • QUERY RESULT 看起来不错,但 SCRIPT OUTPUT 是托管到 CSV 时的所有问题
猜你喜欢
  • 1970-01-01
  • 2010-12-17
  • 2019-08-22
  • 1970-01-01
  • 2014-04-25
  • 2015-11-15
  • 2015-02-15
  • 2019-12-16
相关资源
最近更新 更多