2010-08-10 3 views
3

특정 열의 값이 'FOO - BAR'인 Oracle 9i 데이터베이스에서 레코드를 가져 오려고합니다.하이픈과 대시가 궁금한 경우

'FOO - BAR'조건 값이 테이블에 있지만 쿼리를 실행해도 결과가 나타나지 않습니다.

내 머리를 언젠가 깨뜨린 후, 하이픈의 크기에 차이가 있다는 것을 알아 냈습니다.

'FOO – BAR' 
'FOO - BAR' 

이번에는 (SQLDeveloper를 통해) DB 값을 복사하고 Eclipse IDE에 값을 붙여 넣었습니다. 나는 이클립스에서 어떤 차이점을 보지 못했다. IDE에서 쿼리를 실행하면 놀랍게도 효과가 있었고 값이오고있었습니다.

우리 서버 (UX 상자)에 동일한 클래스 파일을 배포하고 다시 제곱 1 번으로 돌아 왔는데 값이 오지 않습니다.

내 IDE의 파일 인코딩을 기본값 (Cp1252)에서 UTF-8로 변경해 보았습니다. 이제는 모든 것이 정상입니다.

어떤 일이 일어 났는지 설명 할 수 있습니까? 하이픈의 크기는 인코딩에 따라 달라질 수 있습니까? three 가지 종류의 대시가 있습니까?

+0

불행히도 시각 효과가 손실됩니다. 여기서는 두 하이픈이 동일합니다 ... –

+0

@Arereas_D 시도해보십시오 http://img820.imageshack.us/i/hyphens.png/ : D – HanuAthena

답변

5

em-dash, en-dash, 하이픈 등의 유니 코드 문자가 많이 있습니다. 텍스트의 여러 상황에서 사용됩니다.

자세한 내용은 "Dash" wikipedia article을 읽어보십시오. hyphen은 완전히 똑같지는 않습니다.

인코딩이 어떻게 처리되는지는 데이터를 삽입하고 검색 한 다음 표시하는 방법에 따라 달라집니다. 잘라 내기 및 붙여 넣기를 사용하지 않을 것입니다. 이는 데이터베이스에 표시된 실제 데이터에 가장 근접한 값을 찾으려고 시도 할 수 있습니다.

3

대시가 세 가지입니까?

예. 사실 대시로 간주하는 것에 따라 하이픈과 대시에 대해 3 개 이상의 유니 코드 코드 포인트가 있습니다. 예를 들어 U2500 코드 평면에 4 개의 "수평 대시"코드 포인트가 있는데 ... "수직 대시"와 "이중 대시"가 함께 표시됩니다 (예를 들어, @ John Skeet이 링크 된 페이지는 대시 문자도 모두 나열하지 않습니다. .)

하이픈의 크기는 인코딩에 따라 다릅니다.

답할 수없는 질문입니다. 하이픈의 실제 크기는 렌더링 소프트웨어가 화면이나 페이지에서 렌더링하는 방법에 따라 다릅니다. 그러나 사실상 일부 문자 집합에는 하이픈 또는 대시의 크기가 개념적으로 다른 코드 포인트가 있습니다. 엄밀히 말하면, 이것은 인코딩과 아무 관련이 없습니다.그 자체는입니다.

아마도 여기에서는 문자가 한 문자 세트에서 다른 문자 세트로 다양한 지점으로 매핑되고 있습니다. 어떤 시점에서 대상 문자 집합은 여러 하이픈/대시 문자를 지원하지 않으며 매핑은 조용히 "펑키"하이픈을 "일반"하이픈으로 변환합니다.

문자를 잘라서 붙여 넣는 것이 도움이되지 않습니다. 실제 코드 포인트 값을 16 진수로 보는 방법이 필요합니다.

0

는 테이블에서 선택 RAWTOHEX (COL)를 시도

  • 난 도망 내 오라클 인스턴스 해요하지만 난이 당신에게 헥스 덤프를 제공하고 다음 코드를 조회 메모리 에서 작동 생각
0

ASCII() 오라클 기능을 사용하여 DB에 저장된 실제 코드를 검색 할 수 있습니다. 예.

select ascii(substr(t.strng_field, 5, 1)) from string_table t 

그러나 이러한 경우를 처리하는 실제 함수는 문자열 열의 데이터베이스 문자 집합과 채우기 테이블에 대한 데이터 원본에 따라 다릅니다.

convert, decompose 또는 unistr 등이 나열된 here과 같은 문자열 문자 집합 변환 함수 중에서 선택할 수 있습니다.

관련 문제