我有包含名字和姓氏的 SQL 表。姓氏在自己的栏中。问题在于有两个姓氏的用户,因为有时他们在姓氏之间添加多个空格,然后我必须手动查找并修复它们。
如何找到这些中间有多个空格的姓氏?
如果您想查找有多个空格的记录,那么您可以使用以下技巧:
SELECT surname
FROM yourTable
WHERE LENGTH(REPLACE(surname, ' ', '')) < LENGTH(surname) - 1
此查询将检测
surname
列中的两个或多个空格。如果您也想做一个 UPDATE
这是可能的,但这将是相当特定于数据库的,并且在我写这个答案时您没有指定您的数据库。
首先删除那些多余的空格。然后添加一个约束以确保它不会再次发生:
alter table tablename add constraint surname_verify check (surname not like '% %')
(或者,更好的是,有一个触发器确保姓氏的间距、大小写等正确。)
如何删除多余的空格?取决于 dbms。
你也许可以这样做:
update tablename set surname = replace(surname, ' ', ' ')
where surname like '% %'
不需要
where
子句,但会使交易变得更小。
(迭代以删除三个或更多空格。)或使用 regexp_replace。
更整洁:
select string = replace(replace(replace(' select single spaces',' ','<>'),'><',''),'<>',' ')
输出:
选择单个空格