我有名字和姓氏的sql表。姓氏在自己的专栏中。问题是有两个姓氏的用户,因为有时他们在姓氏之间添加多个空格,然后我必须手动找到并修复它们。
如何找到中间有多个空格的这些姓氏?
答案 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',' ','<>'),'><',''),'<>',' ')
输出:
选择单个空格