在我的一个字段中,我的数据看起来像
- Data with spaces, some other data, .
我把它。最后,你可以看到它有双空格
我想删除 - 并删除任何和所有双(或更多空格)。将结果留在一个空白区域。
并非列中的所有数据都具有前导连字符( - )其中一些数据是
Data with spaces, some other data
Data with double spaces, some other data . (double space at end)
Data with leading double space, some other data
- Some data with hyphen, and double space
- double space leading hyphen, some other data
这些是数据库中的少数变体。我试图手动修复每一个,但纠正一个条目需要很长时间。
试试这个:
rtrim(ltrim(REPLACE (COLUMN_NAME, '-', ' ')))
我不明白你最后是否需要一个额外的空间,但如果你只是添加+''
你可以尝试结合一些core functions来获得你想要的结果。
例如,查询
select trim(substr('- Data with spaces, some other data, ', 2))
输出Data with spaces, some other data,
首先,我通过返回一个子字符串删除了-
,然后我修剪了空白。
编辑:检查领先的-
角色
select trim(
case
when (substr(FIELD, 1, 1) in ('-'))
then substr(FIELD, 2)
else
FIELD
end)
in ('-')
适用于您想要排除更多符号的情况,例如。 in ('-', '+', ',')
这样的东西会起作用。虽然它有点乱,所以我不确定这是不是你想要的。您可能需要像cte这样的递归函数来删除超过2个空格。但是,这解决了所提出的问题。
select
case SUBSTRING('- Data with spaces, some other data, .', 1,1)
when '-' then REPLACE(
SUBSTRING('- Data with spaces, some other data, .',2,
LEN('- Data with spaces, some other data, .')-1)
,' ',' ')
else REPLACE('- Data with spaces, some other data, .',' ',' ')
end