2009-07-28 2 views
6

Я бегу это заявление:Oracle - как удалить пробелы?

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

Даже если я использовал заявление облицовку(), мой результат выглядит следующим образом:

A               B        
___               ____ 
kunjramansingh            smartdude 

Тип данных столбца «а» и «В» varchar2 (255).

Существует разрыв между данными двух выходных сигналов. Я хочу показать данные без пробелов - в таком формате:

A    B 
___   ______ 
kunjramansinghsmartdude 

Как это сделать?

+0

Подождите, мы говорим, что данные, возвращаемые или дисплей результатов запроса? SQL * PLUS? – curtisk

+0

Hi curtisk, Мы говорим о данных, возвращенных> – 2009-07-29 04:57:22

ответ

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

--- 
AB___kunjramansinghsmartdude 

Обновление:

Просто конкатенации строк:

SELECT a || b 
FROM mytable 
+0

nice! только что сэкономил мой день ... – 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 должен сделать это.

Если это чисто проблема с отображением, то ответ, данный Тони Эндрюсом, должен работать нормально.

11

Похоже, что вы выполняете запрос в sqlplus. Sqlplus должен убедиться, что в промежутке между колонками достаточно места, поэтому можно отобразить максимальный размер строки (255). Обычно решение должно использовать параметры форматирования столбцов (выполнить перед запросом: формат столбца A20), чтобы уменьшить максимальный размер строки (строки, которые превышают эту длину, будут отображаться в нескольких строках).

-1

Выполнить ниже запрос заменяющего TABLE_NAME & COLUMN_NAME с фактической таблице & имен столбцов:

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

Say, у нас есть столбец со значениями, состоящими из буквенно-цифровых символов a nd только подчеркивание. Нам нужно обрезать этот столбец со всех пробелов, вкладок или любых белых символов. Приведенный ниже пример поможет решить проблему. Для сравнения отображаются обрезанные и оригинальные. 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);