私はこのステートメントを実行しています:
select trim(a),trim(b) from table x;
Trim()ステートメントを使用した場合でも、出力は次のようになります。
A B
___ ____
kunjramansingh smartdude
列 'a'および 'b'のデータ型はvarchar2(255)です。
2つの出力のデータ間にギャップがあります。空白なしでデータを表示したい-このような形式で:
A B
___ ______
kunjramansinghsmartdude
これどうやってするの?
SELECT REGEXP_REPLACE('A B_ __ kunjramansingh smartdude', '\s*', '')
FROM dual
---
AB___kunjramansinghsmartdude
更新:
文字列を連結するだけです:
SELECT a || b
FROM mytable
Sqlplusでクエリを実行しているようです。 Sqlplusは、列間隔に十分なスペースがあることを確認して、最大文字列サイズを表示できるようにする必要があります(255)。通常、解決策は列の書式設定オプション(クエリの前に実行:列AのフォーマットA20)を使用して最大文字列サイズを減らすことです(この長さを超える行は複数の行に表示されます)。
私が正しく理解していれば、これはあなたが欲しいものです
select (trim(a) || trim(b))as combinedStrings from yourTable
選択クエリで 'rpad'を使用してサイズを指定できます...
select rpad(a , 20) , rpad(b, 20) from x ;
ここで、最初のパラメーターは列名で、2番目のパラメーターは埋め込むサイズです。
これは出力フォーマットの問題のように聞こえますか? SQL Plusを使用している場合は、次のようなCOLUMNコマンドを使用します(最大表示幅をそれぞれ20文字にする場合)。
column a format a20
column b format a20
select a, b from mytable;
たとえば、英数字とアンダースコアのみで構成される値を持つ列があるとします。この列をすべてのスペース、タブ、または白い文字から削除する必要があります。以下の例は問題を解決します。トリミングされたものとオリジナルの両方が比較のために表示されています。 select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;
REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS
SQL Plusは列をフォーマットして、最大の可能値(この場合は255文字)を保持します。
出力に実際にこれらの余分なスペースが含まれていないことを確認するには、次のことを試してください。
SELECT
'/' || TRIM(A) || '/' AS COLUMN_A
,'/' || TRIM(B) || '/' AS COLUMN_B
FROM
MY_TABLE;
「/」文字が出力から分離されている場合、それはスペースではなく、そこに入った他のいくつかの空白文字(タブなど)であることを示しています。その場合は、おそらくアプリケーションのどこかの入力検証の問題です。
ただし、最も可能性の高いシナリオは、「/」文字が実際に残りの文字列に触れるため、空白が実際に削除されていることを示しています。
それらを一緒に出力したい場合は、Quassnoiからの回答で実行できます。
それが純粋に表示の問題である場合は、Tony Andrewsの回答が適切に機能するはずです。
次のようにして、出力に空白がないことを確認します。
select first_name || ',' || last_name from table x;
出力
ジョンスミス
ジェーン・ドウ
特定の列の値の空白を置き換える場合は、次のスクリプトを使用してジョブを実行できます。
UPDATE TableName TN
SET TN.Column_Name = TRIM (TN.Column_Name);
以下のコマンドを使用して、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で既に回答
そして、その正常な動作