如何替换字符串的第12个字符,如果它等于'X' 例如,如果我有'ABXD1X354XJXOKJX';在这种情况下,我将用'Y'取代第12位的'X'。结果:“ABXD1X354XJYOKJX”替换字符串中的特定字符
我想用REGEXP_REPLACE功能点12字符,如果测试是等于“X”,如果是用“Y”代替它,但它比我想象的
如何替换字符串的第12个字符,如果它等于'X' 例如,如果我有'ABXD1X354XJXOKJX';在这种情况下,我将用'Y'取代第12位的'X'。结果:“ABXD1X354XJYOKJX”替换字符串中的特定字符
我想用REGEXP_REPLACE功能点12字符,如果测试是等于“X”,如果是用“Y”代替它,但它比我想象的
不知道更多的是如何构成的字符串,这应该工作:
-- 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
更复杂为此,使用SUBSTR函数可能会很容易。
实施例中,如果UPPER(SUBSTR( 'ABXD1X354XJYOKJX',12,1))= 'X'
可以这样做:
CASE SUBSTR(yourfield, 12, 1) WHEN 'X' THEN 'Y' END
并添加根据需要级联
这你应该使用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
太好了,这正是我在找的东西,字符串是字母数字 – Djoz 2013-04-30 19:12:50