2009-07-28 43 views
6

私はこの文を実行しています:オラクル - 空白を削除するには?

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

私はトリム()ステートメントを使用していますが、私の出力は次のようになります。

A               B        
___               ____ 
kunjramansingh            smartdude 

列「A」と「B」のデータ型がありますvarchar2(255)。

2つの出力の間にはギャップがあります。空白なしのデータを次のような形式で表示したい:

A    B 
___   ______ 
kunjramansinghsmartdude 

どうすればいいですか?

+0

待って、私たちは、返されたデータや表示を話していますクエリ結果の? SQL * PLUS? – curtisk

+0

こんにちは、私たちは返されたデータについて話している> –

答えて

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を使用した場合は、(あなたがそれぞれに20文字の最大表示幅をしたいと仮定した場合)、このようなCOLUMNコマンドを使用します。

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形式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 ; 

最初のパラメータはカラム名、2番目のパラメータはパッドしたいサイズです。

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

出力

ジョン・スミス

ジェーン、ドウ

0

は、あなたの出力には空白がない保証するために、次を使用します英数字aからなる値を持つ列があります。アンダースコアのみ。この列をすべての空白、タブ、または白い文字から切り捨てる必要があります。 以下の例は問題を解決します。トリミングされたものと元のものが比較のために表示されます。 select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

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

使用すると、特定の列の値に空白を交換したい場合、あなたはあなたのための仕事をするために次のスクリプトを使用することができ、

UPDATE TableName TN 
    SET TN.Column_Name = TRIM (TN.Column_Name); 
関連する問題