我在sql查询中的名字列中有空白。如何替换显示为null
。
SELECT Name from table
答案 0 :(得分:1)
答案 1 :(得分:0)
也许你在谈论空间?
以下是如何删除任何常见的“空白”字符:
regexp_replace
(有趣的是......只是为了注意[[:space:]]
)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;
答案 2 :(得分:0)
TRIM
从左侧和右侧删除空白字符,因此如果您的字符串只包含空格,那么您将得到一个空字符串,在Oracle中为NULL。
select trim(name) from mytable;
这也会将' Mary Smith '
更改为'Mary Smith'
,但我想您不会介意: - )
但是,如果您想考虑任何空白,例如标签也是如此,然后TRIM
还不够。您可以使用REGEXP_REPLACE
替换仅包含空格的所有名称。
regexp_replace(name, '^[[:space:]]*$', null) from mytable;
如果您还想从任何名称修剪空格(以便' Mary Smith '
再次成为'Mary Smith'
),那么:
select regexp_replace(name, '^[[:space:]]*([^[:space:]]*)[[:space:]]*', '\1') from mytable;