2009-07-28 6 views
6

내가이 문을 실행하고 있습니다 : 나는 트림() 문을 사용하더라도오라클 - 공백을 제거하는 방법?

select trim(a),trim(b) from table x; 

을 내 출력은 다음과 같습니다 : 열 'A'와 'B'의

A               B        
___               ____ 
kunjramansingh            smartdude 

데이터 유형은 varchar2 (255).

두 개의 출력 사이에 간격이 있습니다. 다음과 같은 형식으로 공백없이 데이터를 표시하려고합니다.

A    B 
___   ______ 
kunjramansinghsmartdude 

어떻게하면됩니까?

+0

기다립니다, 우리는 데이터가 반환 또는 디스플레이 이야기 쿼리 결과? SQL * PLUS? – curtisk

+0

안녕하세요 curtisk, 우리는 데이터에 대해 얘기하고 있습니다> –

답변

12
SELECT REGEXP_REPLACE('A B_ __ kunjramansingh smartdude', '\s*', '') 
FROM dual 

--- 
AB___kunjramansinghsmartdude 

업데이트 :

그냥 연결하여 문자열 : 만약 내가 제대로 이해하고

SELECT a || b 
FROM mytable 
+0

좋은! 그냥 내 하루를 저장 ... – CFNinja

5

, 이것은 당신이 출력 형식을 문제 같은 소리

select (trim(a) || trim(b))as combinedStrings from yourTable 
3

를 원하는 것입니다 ? SQL Plus를 사용하는 경우,이 같은 COLUMN 명령을 사용하여 (각 20 개 문자의 최대 표시 폭 원하는 가정) :

column a format a20 
column b format a20 
select a, b from mytable; 
+0

글쎄, 그는 그것을 이미 가지고있어, 어느 시나리오 :) – curtisk

1

SQL Plus는 최대 값을 유지하기 위해 열을 포맷합니다을하는 이 경우는 255 자입니다.

이 출력이 실제로 그 여분의 공백을 포함하지 않음을 확인하려면 다음을 수행하십시오

SELECT 
    '/' || TRIM(A) || '/' AS COLUMN_A 
,'/' || TRIM(B) || '/' AS COLUMN_B 
FROM 
    MY_TABLE; 

를 '/'문자를 귀하의 출력에서 ​​분리하는 경우, 다음에 공백이 아니라고 표시하지만 일부 다른 그 거기에있는 공백 문자 (예 : 탭). 그렇다면 애플리케이션 어딘가에 입력 검증 문제 일 것입니다.

그러나 대부분의 시나리오는 '/'문자가 나머지 문자열을 실제로 터치하므로 공백이 실제로 제거되었음을 증명하는 것입니다.

함께 출력하려면 Quassnoi에서 제공 한 대답을 사용해야합니다.

전적으로 디스플레이 문제 일 경우 Tony Andrews가 제공 한 답변이 정상적으로 작동해야합니다.

11

sqlplus에서 쿼리를 실행하는 것처럼 보입니다. Sqlplus는 최대 문자열 크기를 표시 할 수 있도록 열 간격에 충분한 공간이 있는지 확인해야합니다 (255). 일반적으로 해결 방법은 최대 문자열 크기를 줄이려면이 옵션을 사용하는 것입니다 (쿼리 전에 실행 : A 열 A 형식 A20).이 길이를 초과하는 줄은 여러 줄로 표시됩니다.실제 테이블 & 열 이름과 TABLE_NAME & COLUMN_NAME를 교체 쿼리 아래

-1

실행 :

UPDATE TABLE_NAME SET COLUMN_NAME=TRIM(' ' from COLUMN_NAME); 
3
당신이 당신의 선택 쿼리에 'RPAD'를 사용하고 크기를 지정할 수 있습니다

...

select rpad(a , 20) , rpad(b, 20) from x ; 

여기서 첫 번째 매개 변수는 열 이름이고 두 번째 매개 변수는 채울 크기입니다.

0

은 당신의 출력에 공백이없는 보장하기 위해 다음과 같은 사용

select first_name || ',' || last_name from table x; 

출력이

존 스미스

제인, 미상

1
REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS 
1

말, 영숫자로 구성된 값을 가진 열이 있습니다. 밑줄 만. 이 열을 모든 공백, 탭 또는 모든 흰색 문자에서 잘라내야합니다. 아래의 예는 문제를 해결합니다. 트리밍 된 것과 원래의 것으로 모두 비교를 위해 표시됩니다. select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

0

특정 컬럼 값에 공백을 대체하려는 경우, 당신은 당신을 위해 일을 할 다음 스크립트를 사용할 수

UPDATE TableName TN 
    SET TN.Column_Name = TRIM (TN.Column_Name); 
관련 문제