如何替換字符串的第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