2017-04-12 71 views
0

SQLクエリで自分の名前列に空白があります。どうすればnullと表示されますか。oracleクエリで空白をNULLに変換する方法

SELECT Name from table 
+1

あなたは 'LTRIM(RTRIM(名前を))'を使用することができます。 – Nitish

+4

"空白"を定義できますか?これは何を意味するのでしょうか?あなたがヌルとして表示したいと言うときは、存在しないか文字通りの文字列 ''ヌル ''を意味するのでしょうか? – Ben

+0

@Ben - 空白は空白を意味します...文字列NULLを表示したい –

答えて

1

TRIM functionにこの機能があります。それは、フィールドNameの結果から、先頭と末尾のスペースを削除します

select TRIM(Name) from table 

このように使用されます。

+2

データ型が(N)VARCHARまたは(N)VARCHAR2の場合、空の文字列 ''''とnullは同等です。これは何もしません:http://stackoverflow.com/questions/13278773/null-vs-empty-string-in-oracle – Ben

+1

@Benそれを知らなかった。そして、「TRIM」で十分です。それに応じて私の答えを変えました。 –

+0

クライアントアプリケーションによっては、異なる方法でnullが表示されることがあります。文字列 'null'が常に表示されるようにするには、トリムされた名前がnullの場合に、 'null'を表示するNVLにTRIMをラップします。 – BriteSponge

0

多分あなたはスペースの話ですか?ここで

は、任意の一般的に知られている "空白" 文字削除する方法である:(...興味深いことにただ気付か[[:space:]]regexp_replace


select '<'|| 
    regexp_replace(
    'a'||CHR(9)||' b'||CHR(10)||CHR(11) 
     ||'c'||CHR(12)||CHR(13)||' d' 
, '[[:space:]]','') 
||'>' 
from dual; 
  • より効率的です:避けるregexp_replace ...:TRANSLATEを使用してください!

select '<'|| 
    TRANSLATE(
    'a'||CHR(9)||' b'||CHR(10)||CHR(11) 
     ||'c'||CHR(12)||CHR(13)||' d' -- complicate string with blank 
    ,'A'||CHR(9)||CHR(10)||CHR(11)||CHR(12)||CHR(13)||' ' 
    ,'A') -- this 'A' is a trick to replace by null ('') 
||'>' -- to show where string stops 
from dual; 
0

TRIMあなたの文字列が空白だけで構成されている場合ので、あなたは、OracleにNULLの空の文字列を取得、左と右から空白文字を削除します。

select trim(name) from mytable; 

例えば、これはまた'Mary Smith'' Mary Smith 'を変更するだろうが、私は、しかし、あなたは空白を検討したい、場合は、

:-)気にしないだろうと思いますタブも、TRIMで十分ではありません。 REGEXP_REPLACEを使用すると、空白で構成されるすべての名前をnullに置き換えることができます。

regexp_replace(name, '^[[:space:]]*$', null) from mytable; 

あなたも、その後(その' Mary Smith 'が再び'Mary Smith'なり)任意の名前から空白をトリムする場合:

select regexp_replace(name, '^[[:space:]]*([^[:space:]]*)[[:space:]]*', '\1') from mytable; 
関連する問題