【问题标题】:Oracle - how to remove white spaces?Oracle - 如何删除空格?
【发布时间】:2018-07-11 12:47:32
【问题描述】:

我正在运行这个语句:

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

尽管我使用了 trim() 语句,但我的输出看起来像这样:

A                                                            B                              
___                                                          ____
kunjramansingh                                               smartdude

“a”和“b”列的数据类型是 varchar2(255)。

两个输出的数据之间存在差距。我想显示没有空格的数据 - 格式如下:

A             B
___           ______ 
kunjramansinghsmartdude

我该怎么做?

【问题讨论】:

  • 等等,我们说的是返回的数据还是查询结果的显示? SQL*PLUS?
  • 嗨,curtisk,我们正在讨论返回的数据>

标签: oracle whitespace


【解决方案1】:
SELECT  REGEXP_REPLACE('A B_ __ kunjramansingh smartdude', '\s*', '')
FROM    dual

---
AB___kunjramansinghsmartdude

更新:

只需连接字符串:

SELECT  a || b
FROM    mytable

【讨论】:

    【解决方案2】:

    看起来您正在 sqlplus 中执行查询。 Sqlplus 需要保证列间距有足够的空间,这样才能显示最大字符串大小(255)。通常,解决方案是使用列格式选项(在查询之前运行:列A格式A20)来减小最大字符串大小(超过此长度的行将显示为多行)。

    【讨论】:

      【解决方案3】:

      如果我理解正确,这就是你想要的

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

      【讨论】:

        【解决方案4】:

        您可以在选择查询中使用“rpad”并指定大小...

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

        第一个参数是你的列名,第二个参数是你想要填充的大小。

        【讨论】:

          【解决方案5】:

          这听起来像是输出格式问题?如果使用 SQL Plus,请像这样使用 COLUMN 命令(假设您希望每个字符的最大显示宽度为 20 个字符):

          column a format a20
          column b format a20
          select a, b from mytable;
          

          【讨论】:

          • 好吧,无论哪种情况,他现在都知道了:)
          【解决方案6】:

          SQL Plus 将格式化列以保存最大可能值,在本例中为 255 个字符。

          要确认您的输出实际上不包含这些额外的空格,请尝试以下操作:

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

          如果“/”字符与您的输出分开,则表明它不是空格,而是进入那里的其他一些空白字符(例如制表符)。如果是这种情况,那么它可能是您的应用程序中某处的输入验证问题。

          但是,最有可能的情况是“/”字符实际上会触及字符串的其余部分,从而证明空格实际上已被修剪。

          如果您希望将它们一起输出,那么Quassnoi给出的答案应该可以做到。

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

          【讨论】:

            【解决方案7】:
            REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS
            

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

                使用以下内容确保输出中没有空格:

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

                输出

                约翰,史密斯

                简,多伊

                【讨论】:

                  【解决方案10】:

                  如果您想替换特定列值中的空格,可以使用以下脚本为您完成这项工作,

                  UPDATE TableName TN
                     SET TN.Column_Name   = TRIM (TN.Column_Name);
                  

                  【讨论】:

                    【解决方案11】:

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

                    我的名称是 - NG_CAP_SENDER_INFO_MTR

                    我的列名是 - SENINFO_FROM

                    UPDATE NG_CAP_SENDER_INFO_MTR SET SENINFO_FROM = TRIM(SENINFO_FROM); 
                    

                    Already Answer on StackOverflow LTRIM RTRIM

                    而且工作正常

                    【讨论】:

                      【解决方案12】:

                      运行下面的查询,将 TABLE_NAME 和 COLUMN_NAME 替换为您的实际表名和列名:

                      UPDATE TABLE_NAME SET COLUMN_NAME=TRIM(' ' from COLUMN_NAME);
                      

                      【讨论】:

                        猜你喜欢
                        • 2019-04-05
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-02-18
                        • 2020-06-30
                        • 2021-06-20
                        • 2016-05-19
                        相关资源
                        最近更新 更多