在我的某个字段中,我的数据看起来像
- 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
这些是数据库中的少数变体。我试图手动修复每一个,但纠正一个条目需要很长时间。
答案 0 :(得分:1)
您可以尝试组合部分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 ('-', '+', ',')
答案 1 :(得分:1)
试试这个:
rtrim(ltrim(REPLACE (COLUMN_NAME, '-', ' ')))
我不明白你最后是否需要一个额外的空间,但如果你只是添加+' '
答案 2 :(得分:0)
这样的东西会起作用。虽然它有点乱,所以我不确定这是不是你想要的。您可能需要像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
答案 3 :(得分:0)
我们可以使用带有替换功能的更新查询
update info_table
set address = replace(address, ' ', '-')
上进行了详细说明