database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38772 게시물 읽기
No. 38772
두개의 문자열 비교하여, 위치별 틀린 갯수 구하기
작성자
dol
작성일
2011-08-11 15:37
조회수
5,175

두개의 문자열 비교하여, 위치별 틀린 갯수 구하기

1. 예제는 10 바이트 입니만, 실제는 100바이트입니다.
2. col1, col2는 항상 100 바이트 입니다.
3. 항상 1byte 문자입니다. (전각 및 한글 없음)

 

WITH TEST AS (
    SELECT '1234567890' COL1, '1234557890' COL2 FROM DUAL UNION ALL
    SELECT '1234567890' COL1, '1234555890' COL2 FROM DUAL
)
SELECT * FROM TEST

원하는 결과

col1 col1 틀린수
1234567890 1234557890 1
1234567890  1234555890 2

 

 

혹시 가능하다면 안시쿼리도 있었으면 좋겠습니다. (sql 서버에 있습니다)

답변 미리 감사 드립니다.

 

이 글에 대한 댓글이 총 3건 있습니다.

이건 그냥 함수로 만드시면 될거같은데요... 

1님이 2011-08-11 16:07에 작성한 댓글입니다. Edit

WITH test AS
(
SELECT 1 pk, '1234567890' col1, '1234557890' col2 FROM dual
UNION ALL SELECT 2, '1234567890', '1234555890' FROM dual
)
, copy_t AS
(-- 이 부분은 오라클용이니 100건짜리 테이블 하나 만들어 쓰세요.
SELECT LEVEL lv
  FROM dual
 CONNECT BY LEVEL <= 10
)
SELECT a.pk, a.col1, a.col2
     , COUNT(CASE WHEN SUBSTR(a.col1, lv, 1) <> SUBSTR(a.col2, lv, 1)
                  THEN 1 END) cnt
  FROM test a
 CROSS JOIN copy_t c
 GROUP BY a.pk, a.col1, a.col2
;

마농(manon94)님이 2011-08-11 17:35에 작성한 댓글입니다.
이 댓글은 2011-08-11 17:36에 마지막으로 수정되었습니다.

생각을 한번 하게 하는

좋은 답변 감사합니다.

 

실제는 데이타가 많아서

무식하게 짤라서 + 해서 처리했습니다.

 

dol님이 2011-08-11 18:37에 작성한 댓글입니다.
이 댓글은 2011-08-11 18:37에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38776oracle sql developer 설치 및 사용 문의 [1]
전상도
2011-08-12
4662
38775decode 문 안에서 정렬 [2]
박주영
2011-08-11
4521
38774키가 없는 테이블 업데이트하기... [2]
나초보
2011-08-11
3807
38772두개의 문자열 비교하여, 위치별 틀린 갯수 구하기 [3]
dol
2011-08-11
5175
38771wm_concat 의 정렬 문의좀 드릴게요... [1]
박수길
2011-08-11
12396
38769정렬(order by) 문의 [1]
채종식
2011-08-10
3484
38768캘린터 형태의 예약일정을 표시하려고 하는대 좀 도와주세요... [2]
박수길
2011-08-10
4949
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다