newkid 发表于 2012-7-12 21:56 ![]()
如果串里的元素都是单个字符那就把逗号去掉然后用TRANSLATE。

我昨天在地铁上刚想到的办法,木有想到被你提前想到了!
SQL> WITH t AS
2 (SELECT 'a,b,c,d,e,f' str1,'a,b,c,e,h' str2 FROM dual
3 )
4 SELECT REPLACE(TRANSLATE(str1,str2,rpad(' ,',2*LENGTH(regexp_replace(str2, ',', '')),' ,')),' ,','')
5 ||','
6 || REPLACE(TRANSLATE(str2,str1,rpad(' ,',2*LENGTH(regexp_replace(str1, ',', '')),' ,')),' ,','') diff
7 FROM t
8 /
DIFF
-----
d,f,h |