web-dev-qa-db-ja.com

Oracle-空白を削除するには?

私はこのステートメントを実行しています:

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

Trim()ステートメントを使用した場合でも、出力は次のようになります。

A                                                            B                              
___                                                          ____
kunjramansingh                                               smartdude

列 'a'および 'b'のデータ型はvarchar2(255)です。

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

A             B
___           ______ 
kunjramansinghsmartdude

これどうやってするの?

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

---
AB___kunjramansinghsmartdude

更新:

文字列を連結するだけです:

SELECT  a || b
FROM    mytable
12
Quassnoi

Sqlplusでクエリを実行しているようです。 Sqlplusは、列間隔に十分なスペースがあることを確認して、最大文字列サイズを表示できるようにする必要があります(255)。通常、解決策は列の書式設定オプション(クエリの前に実行:列AのフォーマットA20)を使用して最大文字列サイズを減らすことです(この長さを超える行は複数の行に表示されます)。

12
Plasmer

私が正しく理解していれば、これはあなたが欲しいものです

select (trim(a) || trim(b))as combinedStrings from yourTable
5
curtisk

選択クエリで 'rpad'を使用してサイズを指定できます...

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

ここで、最初のパラメーターは列名で、2番目のパラメーターは埋め込むサイズです。

4
Gaurav Singh

これは出力フォーマットの問題のように聞こえますか? SQL Plusを使用している場合は、次のようなCOLUMNコマンドを使用します(最大表示幅をそれぞれ20文字にする場合)。

column a format a20
column b format a20
select a, b from mytable;
3
Tony Andrews

たとえば、英数字とアンダースコアのみで構成される値を持つ列があるとします。この列をすべてのスペース、タブ、または白い文字から削除する必要があります。以下の例は問題を解決します。トリミングされたものとオリジナルの両方が比較のために表示されています。 select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

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

SQL Plusは列をフォーマットして、最大の可能値(この場合は255文字)を保持します。

出力に実際にこれらの余分なスペースが含まれていないことを確認するには、次のことを試してください。

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

「/」文字が出力から分離されている場合、それはスペースではなく、そこに入った他のいくつかの空白文字(タブなど)であることを示しています。その場合は、おそらくアプリケーションのどこかの入力検証の問題です。

ただし、最も可能性の高いシナリオは、「/」文字が実際に残りの文字列に触れるため、空白が実際に削除されていることを示しています。

それらを一緒に出力したい場合は、Quassnoiからの回答で実行できます。

それが純粋に表示の問題である場合は、Tony Andrewsの回答が適切に機能するはずです。

1
JosephStyons

次のようにして、出力に空白がないことを確認します。

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

出力

ジョンスミス

ジェーン・ドウ

0
Jules Walker

特定の列の値の空白を置き換える場合は、次のスクリプトを使用してジョブを実行できます。

UPDATE TableName TN
   SET TN.Column_Name   = TRIM (TN.Column_Name);
0
Chikku Jacob

以下のコマンドを使用して、Oracleの空白を削除しました

TableName is-NG_CAP_SENDER_INFO_MTR

私の列名は-SENINFO_FROM

UPDATE NG_CAP_SENDER_INFO_MTR SET SENINFO_FROM = TRIM(SENINFO_FROM); 

StackOverflow LTRIM RTRIMで既に回答

そして、その正常な動作

0
Ved Prakash