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

时间:2012-02-26 18:13:39

标签: sql database sqlite

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

-  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

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

4 个答案:

答案 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, ' ', '-')

输出 enter image description here

我已经在neerajcodesolutions.com

上进行了详细说明