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
운영게시판
최근게시물
MySQL Q&A 30645 게시물 읽기
No. 30645
MySQL UDF 관련 질문. 한글처리 문제
작성자
김석찬(kalsman)
작성일
2013-10-08 10:20
조회수
8,815

 음 제가 ,MySQL UDF 를 작성중인데요. 

간단하게 문자열을 비교하는 UDF입니다. 

아래는 소스의 일부입니다. 

그런데 한글이 인자로(전체 인자는 2개) 입력되면 strcmp 자체가 이상하게 작동합니다.

정확하게는 행이 하나인 쿼리에서는 제대로 작동합니다. 그러나 행이 여러개 이면 동일한 문자열이 들어간다 하더라도 같지 않다고 해버리는 겁니다.

그런데 영문은 잘 작동한다는 겁니다. 저의 짧은 지식으로는 strcmp는 한글이라도 잘 작동하는 걸로 아는데요 무슨 문제일까요. 

제가 뭔가 빠뜨린게 있을까요?

//----------------------------------------------------------------------------------------------

char key[500];

memcpy(key, args->args[0], args->args->lengths[0]);

char tar[500];

memcpy(tar, args->args[1], args->args->lengths[1]);

 

strcmp(key, tar);  // 입력 문자열이 완전히 동일한지 비교. <-- 여러행에 대해 이 소스코드로 만든 UDF를 적용하면, 한글의 경우 이상하게 작동합니다.

... 

strtok('key, " "); // 문자열을 잘라서 비교 .. <-- 이 부분에서도 이상하게 작동하는듯도 하구요.

...

//------------------------------------------------------------------------------------------------

 

 

 

 

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

자답입니다.

 

역시 매뉴얼이 정답을 주는군요. 

 

MySQL 한 귀퉁이에 이런 말이 있군요. "UDF char * 형 인자(즉, 문자열)은 null terminator를 가지다고 가정하지 말라". 라고 되어있군요. 허. 당연히 문자열이면 null terminator가 있다고 생각했는데 없었다니. 그러니 멋대로 작동했던 거더군요. 

 

쓸데없이 공간을 DB 사랑넷 메모리만 잡아먹어 죄송합니다. 

김석찬(kalsman)님이 2013-10-08 14:37에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
306483개의 테이블 데이터를 하나로 불러오려면요?
2013-10-10
8605
30647기존에 만들어놓은 trigger 보는 방법? [2]
윤민승
2013-10-08
9057
30646질문 있씁니다. 누가 좀 돠 주세요. [3]
이해열
2013-10-08
9594
30645MySQL UDF 관련 질문. 한글처리 문제 [1]
김석찬
2013-10-08
8815
30643이 트리거가 왜 안될까요?? [1]
가비닷
2013-10-04
8865
30642Transaction Isolation Level과 Binary Log의 상관관계에 관한 질문... [2]
김성환
2013-09-30
9524
30641binlog_format 변경시 문제점이 있나요???
김성환
2013-09-30
8212
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다