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
운영게시판
최근게시물
MS-SQL Q&A 5931 게시물 읽기
No. 5931
두개의 문자열 비교하여, 위치별 틀린 갯수 구하기
작성자
dol
작성일
2011-08-11 15:40
조회수
7,502
두개의 문자열 비교하여, 위치별 틀린 갯수 구하기
 
1. 예제는 10 바이트 입니만, 실제는 100바이트입니다.
2. col1, col2는 항상 100 바이트 입니다
.
3. 항상 1byte 문자입니다. (전각 및 한글 없음)
 
원시데이터

col1
col1
1234567890
1234557890
1234567890 
1234555890

 
원하는결과

col1
col1
틀린수
1234567890
1234557890
1
1234567890 
1234555890
2

 
답변 미리 감사 드립니다.
이 글에 대한 댓글이 총 1건 있습니다.
 

우선 NUMs 라는 테이블를 비교를 위해서 만드셔야 합니다

Primary Key 를 꼭 생성 해주시고요

ID
 
1
 
2
...
100
 

 

declare @num1 varchar(100),
           @num2 varchar(100)
   
    set @num1 = '1111112323111111232311111123231111912323111111232311111123231111112323111111232311111123231111112323'
    set @num2 = '1111112324111111232415111123241111112324111111232411111123241111112324111111232411111123241111112324'
  

  
   select @num1 as col1,@num2 as col2,COUNT(ELEMENT1) as 틀린수
   from
   (SELECT ROW_NUMBER() OVER(ORDER BY ID ASC) AS ROWNUM1,substring (@num1, ID, 1) AS 'ELEMENT1'
   FROM   NUMS
   WHERE  ID <= LEN(@num1) AND SUBSTRING ( @num1,ID,1) <> '' ) as a
  
   inner join
     
   (SELECT ROW_NUMBER() OVER(ORDER BY ID ASC) AS ROWNUM2,substring (@num2, ID, 1) AS 'ELEMENT2'
   FROM   NUMS
   WHERE  ID <= LEN(@num2) AND SUBSTRING ( @num2,ID,1) <> '' ) as b
   on   ROWNUM1 = ROWNUM2 and ELEMENT1 <> ELEMENT2

 

결과는 이렇게 나옵니다 

col1
col1                                                      틀린수      
111111232311111123231111112...
1111112324111111232415114...        12
 
 

도움이 되셨는지 모르겠네요

 

서정록(tjwjdfhr)님이 2011-08-12 10:24에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
5935형변환
오공
2011-08-17
6405
5934쿼리 질문 MS-SQL 2008 - 문자열 분할.. 좀 복잡해요 [3]
우세연
2011-08-15
7343
5932자동증가로 설정하면 몇건까지 증가되나요 [1]
김길동
2011-08-12
7001
5931두개의 문자열 비교하여, 위치별 틀린 갯수 구하기 [1]
dol
2011-08-11
7502
5930한가지 더 질문드리겠습니다. 여러로우의 텍스트값을 하나의 로우에 붙여서 출력하고자 합니다. [3]
최명근
2011-08-10
7337
5929질문입니다. GROUP BY 사용하여 데이터 가로로 뽑고자 합니다. [2]
최명근
2011-08-10
8020
5928그룹별 상위 n개 조회쿼리 질문 [3]
네로
2011-08-09
9040
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다