SQL - 查找具有2个或更多空格的值的行
我拥有名称和姓氏的sql表。姓在自己的专栏中。问题在于有两个姓氏的用户,因为他们有时会在姓氏之间添加多个空格,然后我必须找到并修正它们。SQL - 查找具有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。
同时我找到了解决办法:) SELECT * FROM'table' WHERE(姓氏LIKE'%%') – unforgiven
很好。仍然添加该约束! – jarlh
即使整洁:
select string = replace(replace(replace(' select single spaces',' ','<>'),'><',''),'<>',' ')
输出:
选择单个空格
如果你想找到记录其中有一个以上的空间,那么你可以使用下面的技巧:
SELECT surname
FROM yourTable
WHERE LENGTH(REPLACE(surname, ' ', '')) < LENGTH(surname) - 1
Th查询将在surname
列中检测到两个或更多空格。如果你也想做一个UPDATE
这是可能的,但它会是相当数据库特定的,并且在我写这个答案的时候你没有指定你的数据库。
你正在使用哪个数据库? –