【问题标题】:Oracle RPAD() padding with an empty stringOracle RPAD() 用空字符串填充
【发布时间】:2013-09-16 02:36:46
【问题描述】:

我正在尝试从 SQL*Plus 中创建转储文件。要求是为填充创建 null '' 但是当我使用 NULL 时,即使数据值也会被无效,请参见下文。

SQL> select RPAD(1234,10,' ') from dual ; RPAD(1234, ---------- 1234 SQL> select RPAD(1234,10,'') from dual; R -

我见过其他脚本似乎使用 null('') 进行填充

请帮忙谢谢

【问题讨论】:

  • 你到底想做什么?用“nothing”填充值有什么意义?
  • NULLempty string 不一样。用它们中的任何一个来填充都是没有意义的。通常single space 用于填充。您是否可能将'' 误认为' '
  • @PM77-1 in oracle null 和空字符串是一样的:) 试试select * from dual where '' is null;

标签: sql oracle


【解决方案1】:

这段代码:

RPAD(1234,10,'')

将 1234 连接到 '',在 Oracle 中相当于 NULL,因此它会导致 NULL(任何连接到 NULL 的东西都会产生 NULL)

Oracle 中没有 NULL('')。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    RPAD 接受一个字符或字符串作为其第三个参数,用于将初始字符串“填充”到特定长度。

    RPAD 可用于返回“保证”长度为 n 个字符的字符串(根据第二个参数)。

    由于 NULL 不代表任何特定字符或字符串并且长度为零,因此它不能用于填充 - RPAD 在这种情况下显然返回 NULL,这是有道理的,因为唯一的其他选项是 RPAD 引发异常。

    【讨论】:

    • 是的。 “RPAD(expr1 , n [, expr2 ])... expr1 不能为空。” Reference
    • @javaPlease42,是的 - 但 OP 正在谈论 expr2,它可以为空(虽然如果这样使用不是很有用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2019-11-24
    • 2012-08-06
    • 2019-06-12
    • 2013-07-16
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多