如果字符串的第12个字符等于'X',怎么能替换它 例如,如果我有'ABXD1X354XJXOKJX';在这种情况下,我将用'Y'替换第12位的'X'。结果:'ABXD1X354XJYOKJX'
我正在考虑使用regexp_replace函数指向第12个字符,测试它是否等于'X',如果是,则将其替换为'Y',但它比我想象的更复杂
答案 0 :(得分:3)
这应该适用于SUBSTR
:
select
substr('ABXD1X354XJXOKJX', 1, 11) ||
case when substr('ABXD1X354XJXOKJX', 12, 1) = 'X' THEN 'Y' ELSE substr('ABXD1X354XJXOKJX', 12, 1) END ||
substr('ABXD1X354XJXOKJX', 13)
from dual
答案 1 :(得分:1)
你可以这样做:
CASE SUBSTR(yourfield, 12, 1) WHEN 'X' THEN 'Y' END
并根据需要添加连接
答案 2 :(得分:1)
在不知道如何构成你的字符串的情况下,这应该有效:
-- matches:
select regexp_replace('12dasdf32432Xasdasd', '([[:alnum:]]{11})(X{1})', '\1Y' ) from dual
union
-- doesn't match:
select regexp_replace('12dasdf32432Zasdasd', '([[:alnum:]]{11})(X{1})', '\1Y' ) from dual
答案 3 :(得分:0)
为此,使用SUBSTR功能可能同样容易。
示例,如果UPPER(SUBSTR('ABXD1X354XJYOKJX',12,1))='X'