SQL - 查找值之间有2个或更多空格的行

时间:2016-08-12 07:47:20

标签: sql string row space

我有名字和姓氏的sql表。姓氏在自己的专栏中。问题是有两个姓氏的用户,因为有时他们在姓氏之间添加多个空格,然后我必须手动找到并修复它们。

如何找到中间有多个空格的这些姓氏?

3 个答案:

答案 0 :(得分:3)

如果您想查找具有多个空格的记录,那么您可以使用以下技巧:

SELECT surname
FROM yourTable
WHERE LENGTH(REPLACE(surname, ' ', '')) < LENGTH(surname) - 1

此查询将检测surname列中的两个或多个空格。如果你也想做一个UPDATE这是可能的,但它可能是相当特定于数据库的,并且你在我写这个答案时没有指定你的数据库。

答案 1 :(得分:2)

首先删除那些额外的空格。然后添加一个约束,确保它不会再次发生:

alter table tablename add constraint surname_verify check (surname not like '%  %')

(或者更好的是,有一个触发器确保姓氏间隔适当,套装等。)

如何删除多余的空格?取决于dbms。

您可以执行以下操作:

update tablename set surname = replace(surname, '  ', ' ')
where surname like '%  %'

不需要where子句,但会使事务更小。

(迭代删除三个或更多空格。)或者使用regexp_replace。

答案 2 :(得分:0)

更整洁:

select string = replace(replace(replace(' select   single       spaces',' ','<>'),'><',''),'<>',' ')

输出:

选择单个空格