首页 > 解决方案 > 在 sql 中考虑空值的子字符串替代方案

问题描述

我在 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 个。

有没有人有替代方案?

标签: sqlstringoraclesql-updatesubstring

解决方案


我认为你想要RPAD()

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

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


推荐阅读