10

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

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

trim() ステートメントを使用しましたが、出力は次のようになります。

A                                                            B                              
___                                                          ____
kunjramansingh                                               smartdude

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

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

A             B
___           ______ 
kunjramansinghsmartdude

これどうやってするの?

4

12 に答える 12

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

---
AB___kunjramansinghsmartdude

アップデート:

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

SELECT  a || b
FROM    mytable
于 2009-07-28T17:39:43.547 に答える
12

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

于 2009-07-28T18:27:21.160 に答える
5

私が正しく理解しているなら、これはあなたが望むものです

select (trim(a) || trim(b))as combinedStrings from yourTable
于 2009-07-28T17:42:36.147 に答える
4

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

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

ここで、最初のパラメーターは列名で、2 番目のパラメーターはパディングするサイズです。

于 2013-06-11T05:46:22.783 に答える
3

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

column a format a20
column b format a20
select a, b from mytable;
于 2009-07-28T17:46:35.000 に答える
1

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

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

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

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

ただし、最も可能性の高いシナリオは、「/」文字が実際に残りの文字列に接触するため、空白が実際にトリミングされていることを証明することです。

それらを一緒に出力したい場合は、Quassnoiによって与えられた答えがそれを行う必要があります。

それが純粋に表示の問題である場合、TonyAndrewsによる回答は問題なく機能するはずです。

于 2009-07-28T17:57:01.533 に答える
1
REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS
于 2014-07-03T06:54:42.457 に答える
0

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

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

出力

ジョンスミス

ジェーン・ドウ

于 2013-07-11T15:28:07.120 に答える
0

特定の列の値の空白を置き換えたい場合は、次のスクリプトを使用して作業を行うことができます。

UPDATE TableName TN
   SET TN.Column_Name   = TRIM (TN.Column_Name);
于 2015-08-27T07:06:55.313 に答える
-1

TABLE_NAME と COLUMN_NAME を実際のテーブルと列の名前に置き換えて、以下のクエリを実行します。

UPDATE TABLE_NAME SET COLUMN_NAME=TRIM(' ' from COLUMN_NAME);
于 2012-07-15T13:58:20.997 に答える