【问题标题】:Substring alternative to consider null values in sql在 sql 中考虑空值的子字符串替代方案
【发布时间】:2020-10-12 08:45:00
【问题描述】:

我在 Oracle SQL 中有我的更新语句,在我的 MISC_FLAGS 的第 9 个字节之后连接 N

UPDATE SYS_CODE 
SET MISC_FLAGS = SUBSTR(MISC_FLAGS, 1, 9) || 'N', 
    mod_date_time = sysdate, 
    user_id = 'Feature Number'  
WHERE REC_TYPE = 'X' 
  AND CODE_TYPE = 'XXX' 
  AND CODE_ID = 'XXXX';

但在某些情况下,我们将 Misc Flag 中的示例第 8 和第 9 字节设置为空。在这些情况下,子字符串不考虑第 8 和第 9 个字节,并将第 8 个字节更新为 N 而不是第 10 个。

有没有人可以替代这个?

【问题讨论】:

  • 那你应该考虑并告诉我们你想要什么角色出现在第 8 位和第 9 位。

标签: sql string oracle sql-update substring


【解决方案1】:

我想你想要RPAD():

MISC_FLAGS = RPAD(SUBSTR(MISC_FLAGS, 1, 9), 9, ' ') || 'N'

如果 MISC_FLAGS 少于 9 个字符,这会将空白字符添加到它。

【讨论】:

    【解决方案2】:

    您可以使用RPAD()。例如:

    UPDATE SYS_CODE SET
      MISC_FLAGS = RPAD(SUBSTR(MISC_FLAGS,1,9), 9, ' ') || 'N', 
      mod_date_time = sysdate, 
      user_id = 'Feature Number'  
    WHERE REC_TYPE = 'X' AND CODE_TYPE= 'XXX' AND CODE_ID = 'XXXX';
    

    【讨论】:

      【解决方案3】:

      我觉得RPAD的组合-> SUBSTR在下面的时尚必须帮助你。

      这里是fiddle 为您提供帮助。

      UPDATE SYS_CODE SET
        MISC_FLAGS = SUBSTR(RPAD(MISC_FLAGS, 9, '0'),1,9)|| 'N', 
        mod_date_time = sysdate, 
        user_id = 'Feature Number'  
      WHERE REC_TYPE = 'X' AND CODE_TYPE= 'XXX' AND CODE_ID = 'XXXX';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-30
        • 2021-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        • 1970-01-01
        相关资源
        最近更新 更多