是否有一个Oracle Trim等价物适用于仅由空白组成的VARCHAR字段?

ruf*_*fin 1 oracle trim

SELECT 1 FROM dual where trim('X ') = 'X'
Run Code Online (Sandbox Code Playgroud)

给1.

SELECT 1 FROM dual where trim(' ') = ''
Run Code Online (Sandbox Code Playgroud)

没有行.

有没有一种简单的方法可以选择field空格不足正则表达式的所有行?

有没有办法"欺骗"TRIM进行TRIMM ' '和给予''

Jus*_*ave 6

在Oracle中,空字符串为NULL.所以传统方法就是这样的

SELECT 1 
  FROM dual 
 WHERE trim(' ') IS NULL
Run Code Online (Sandbox Code Playgroud)

当然,这也将返回列所在的结果NULL.如果需要列非NULL且仅由空格组成的情况

SQL> ed
Wrote file afiedt.buf

  1  with t as (
  2    select 1 id, ' ' str from dual union all
  3    select 2, null from dual union all
  4    select 3, 'a' from dual
  5  )
  6  select *
  7    from t
  8   where trim(str) is null
  9*    and str is not null
SQL> /

        ID S
---------- -
         1
Run Code Online (Sandbox Code Playgroud)

只是让这个答案,如果你想用一个简单的regexp_like,以及

SQL> ed
Wrote file afiedt.buf

  1  with t as (
  2    select 1 id, ' ' str from dual union all
  3    select 2, null from dual union all
  4    select 3, 'a ' from dual
  5  )
  6  select *
  7    from t
  8*  where regexp_like( str, '^[[:space:]]+$' )
SQL> /

        ID ST
---------- --
         1
Run Code Online (Sandbox Code Playgroud)

  • 如果OP试图从BLANK中告诉NULL,则这可能无法按预期工作.或许像select(*)from(select''txt from dual union select''from dual union select null from dual)其中txt不为null且trim(txt)为null (2认同)