문자열 비교후 Counting 0 11 1,733

by 팅크인 [PL/SQL] 문자열 문자열비교 문자비교함수 [2013.06.24 16:16:00]


두개의 컬럼이 있는데 명칭에 관한 컬럼입니다.

두개의 명칭이 서로 상이한데 문자열로 비교한 후에 몇글자나 동일한지 알고 싶습니다.

예를들어 Name필드는 "가나다" Name1필드는 "다라마" 이럴경우는 1이 나오는거죠...

글자하나하나 비교하여 동일한 명칭 개수를 알고 싶습니다.

부탁드립니다.
by 마농 [2013.06.24 16:27:23]
아리까리한 예제 다양하게 부탁드려요.
'다가나다' 와 '다나다나' 비교하면 몇개?

by 팅크인 [2013.06.24 16:38:26]

Name을 기준으로 비교를 하는게 맞을듯 합니다.
"다가나다" 가Name이라는 기준으로 3개가 되는겁니다.

by 마농 [2013.06.24 16:43:52]
왜? 3개인지 모호 한데요?
기준을 알려주세요.

by 신이만든짝퉁 [2013.06.24 16:54:36]
name : 다나가나
name1 : 다나다나

에서

name의 첫글자 '다' 가 name1 에  있나? 있음
name의 두번째 글자 '나' 가 name1 에  있나? 있음
name의 세번째 글자 '가' 가  name1 에  있나? 없음
name의 네번째 글자 '나' 가  name1 에  있나? 있음

이런식으로 3이라는 뜻인가요?

by 아발란체 [2013.06.24 16:47:27]

가Name이란는 기준이 뭔에요?  ㅋㅋ
이게 이해가 안가서 그런가

"다가나다"와 "다나다나"를 비교 할 때 왜 3개가 나오는지 이해가 잘... >ㅅ<)/


by 아린 [2013.06.24 16:51:29]
WITH t(num, a, b) AS(
SELECT 1, '가나다', '다라다'     FROM dual UNION ALL
SELECT 2, '다가나다', '다나다나' FROM dual UNION ALL
SELECT 3, '안녕', '안녕하세요'   FROM dual
)
SELECT num, a, b
     , COUNT(DECODE(REGEXP_COUNT(b, SUBSTR(a, lv, 1)),0 ,NULL, 1)) cnt
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 100) 
 WHERE lv <= LENGTH(a)
 GROUP BY num, a, b
 ORDER BY num

by 마농 [2013.06.24 17:05:10]
-- ㅋ. 이제 알것 같아요... name의 각 글자가 name1에 있는지 체크
-- 내가 아는걸 다른사람도 당연히 알거라고 생각하시면 안되요.
-- 내가 아는걸 다른 사람도 알수 있도록 이해시키는게 중요한듯~
-- 11G 라면 REGEXP_COUNT 이용하시고 안되시면...
SELECT name, name1
     , REGEXP_COUNT(name, '['||name1||']') cnt_11g
     , LENGTH(name) - NVL(LENGTH(REGEXP_REPLACE(name, '['||name1||']')), 0) cnt_10g
     , LENGTH(name) - NVL(LENGTH(TRANSLATE(name, '@'||name1, '@')), 0) cnt_9i
  FROM t
;

by 신이만든짝퉁 [2013.06.24 17:19:36]
LENGTH(name) - NVL(length(REGEXP_REPLACE(name, '['||name1||']')), 0) cnt_10g

 length 가 빠진 것 같습니다.

by 마농 [2013.06.24 17:21:56]
켁...수정했어요~ ^^

by 아발란체 [2013.06.24 17:19:27]

다들.. 천재....!


by 팅크인 [2013.06.24 17:23:05]

죄송합니다. ...제가 어휘력이 영~~~딸려서 앞으로 여쭤볼때는 상세히 알 수 있도록 잘 정리해서 올리겠습니다.
감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입