스크립트를 사용하여 모든 CHAR 유형 필드를 VARCHAR2 유형으로 변환하고 다음과 같이 문자열의 공백을 잘라낼 수 있습니다.
선언
시작
c in(*
선택)user_tab_columns t1에서
여기서 t1.DATA_TYPE = 'CHAR'
) 루프
즉시 '테이블 변경' || c.table_name || ' add g_w_' || c.column_name || ' varchar2(' || c.char_length || ')';
즉시 '업데이트' 실행 || c.table_name || ' set g_w_' || c.column_name ||즉시 '업데이트' 실행 || c.table_name || 'set' || c.column_name ||
즉시 '테이블 변경' || c.table_name || '수정' || c.column_name || ' varchar2(' || c.char_length || ')';즉시 '업데이트' || c.table_name || ' set ' || c.column_name || ' = Trim(g_w_' || c.column_name || ')';
즉시 '테이블 변경' 실행 || c.table_name || 'g_w_ 열 삭제 ||
끝 루프;끝;
오라클 데이터베이스 테이블 구조에서 공백과 같은 문자를 제거하는 방법
1. 비교하기 전에 먼저 공백을 제거하십시오(예: 이름의 모든 공백 제거):
table_name set xm=replace(xm, ' ') 업데이트 ;
그러면 비교해보실 수 있습니다.
2. 그러나 일부 이름의 중간이나 끝에 제거되지 않은 공백과 유사한 문자가 있는 것을 발견할 수 있지만 분명히 일반적인 공백이 아니므로 Tab Jian의 잘못이 있다고 의심합니다. 그래서 인터넷에서 언급하는 TAB 키를 제거하는 방법을 따랐고, chr(9)를 사용하여 스페이스바를 대체했습니다(TAB 키의 ASCII 값은 9입니다). 먼저 실험을 위해 공백 같은 문자로 기록해 보세요.
table_name에서 교체(xm, chr(9))를 선택하세요.
이 방법을 사용하면 실제 탭 키 공백이 일부 제거되고 일괄 업데이트 방법이 적용됩니다.
3. 하지만 제가 겪은 상황은 운이 좋지 않아서 우주 같은 열쇠를 제거하는데 실패했습니다. 어떻게 하나요? 먼저 이 스페이스 키의 ASCII 코드 값을 가져온 다음 chr(ASCII 코드 값) 메서드를 사용하여 처리하기로 결정했습니다.
①공백과 같은 키가 포함된 전체 문자열의 길이()를 구하여 문자열에서 공백과 같은 키의 시작 위치와 공백과 같은 키의 길이를 결정합니다.
②. 공백 유사 키의 ASCII 코드 값: ascii(substr(xm,n,m)) n은 공백 유사 키의 시작 위치입니다.
3.SELECT replacement(xm, chr (단계 ②에서 얻은 ASCII 코드 값)) from table_name where;
문제가 해결되었습니다. 그런데 위의 2단계에서 얻은 ASCII 코드 값이 41377이라는 것을 알게 되었습니다. 이것은 한자의 ASCII 코드 값이어야 하는데 공백처럼 보이기 때문에 중국어에서는 스페이스 키와 TAB 키가 아닐까 하는 생각이 들었습니다. 방법? 시도해 본 후에는 그렇지 않다는 것을 알았습니다. 또한 전각과 반각의 차이가 있는지 궁금합니다. 왜냐하면 우리는 보통 반각으로 문자를 입력하기 때문입니다. 첫 번째 단계인 "1. 먼저 공백을 제거한 후 비교하세요..."에 따라 전체 너비 상태에서 공백을 입력해 검색해 보니 놀랍게도 공백이 모두 제거되지 않은 것으로 나타났습니다. 병렬 연결을 통해 전각 모드로 입력된 공백의 ASCII 코드 값이 41377임을 확인했습니다.
위 내용은 Oracle의 CHAR 유형 데이터 공백 문제에 대한 해결책은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!