在sql中考虑空值的子字符串替代方法

5vf7fwbs  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(262)

我在oraclesql中有一个update语句,其中在misc\u标志的第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标志中的第8和第9字节设置为null。在这些情况下,子串不考虑第8和第9字节,而是将第8字节更新为n,而不是第10字节。
有人有别的选择吗?

jq6vz3qz

jq6vz3qz1#

我想你想 RPAD() :

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

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

xurqigkl

xurqigkl2#

你可以用 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';
tmb3ates

tmb3ates3#

我觉得下面的rpad-->substr组合方式一定能帮到你。
这是一把小提琴,请你帮忙。

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';

相关问题