10

I am running this statement:

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

Even though I used the trim() statement, my output looks like this:

A                                                            B                              
___                                                          ____
kunjramansingh                                               smartdude

The datatype of column 'a' and 'b' is varchar2(255).

There is a gap between the data of two output. I want to show the data without the whitespace - in a format like this:

A             B
___           ______ 
kunjramansinghsmartdude

How can I do this?

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 ;

其中第一个参数是您的列名,第二个参数是您要填充的大小。

于 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 给出的答案应该可以做到。

如果纯粹是显示问题,那么 Tony Andrews 给出的答案应该可以正常工作。

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

比如说,我们有一列的值仅由字母数字字符和下划线组成。我们需要从所有空格、制表符或任何白色字符中删除此列。下面的例子将解决这个问题。修剪的一个和原始的一个都被显示出来以进行比较。 select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

于 2014-11-19T06:01:25.377 回答
0

Use the following to insure there is no whitespace in your output:

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

Output

John,Smith

Jane,Doe

于 2013-07-11T15:28:07.120 回答
0

我使用以下命令删除 Oracle 中的空格

我的名是 - NG_CAP_SENDER_INFO_MTR

我的列名是 - SENINFO_FROM

UPDATE NG_CAP_SENDER_INFO_MTR SET SENINFO_FROM = TRIM(SENINFO_FROM); 

已经回答 StackOverflow LTRIM RTRIM

它工作正常

于 2018-07-11T04:47:32.303 回答
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 回答