SQL从DB中删除前导连字符( - )并删除连续的空格

问题描述 投票:1回答:4

在我的一个字段中,我的数据看起来像

-  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

这些是数据库中的少数变体。我试图手动修复每一个,但纠正一个条目需要很长时间。

sql database sqlite
4个回答
1
投票

试试这个:

rtrim(ltrim(REPLACE (COLUMN_NAME, '-', ' ')))

我不明白你最后是否需要一个额外的空间,但如果你只是添加+''


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 ('-', '+', ',')


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

0
投票

我们可以使用更新查询和替换功能

update info_table
set address = replace(address, ' ', '-')

输出qazxsw poi

我已经在enter image description here上了解了这些细节

© www.soinside.com 2019 - 2024. All rights reserved.