2016-08-12 32 views
0

我擁有名稱和姓氏的sql表。姓在自己的專欄中。問題在於有兩個姓氏的用戶,因爲他們有時會在姓氏之間添加多個空格,然後我必須找到並修正它們。SQL - 查找具有2個或更多空格的值的行

如何找到這些姓氏之間有多個空間?

+1

你正在使用哪個數據庫? –

回答

1

首先刪除這些額外的空間。然後添加一個約束確保它不會再次發生:

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

(或者甚至更好,有一個觸發確保姓氏正確間隔,套管等)

如何刪除多餘的空間?取決於dbms。

你或許可以這樣做:

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

是不需要的where條款,但使得交易小得多。

(迭代擺脫三倍或更多的空間。)或使用regexp_replace。

+0

同時我找到了解決辦法:) SELECT * FROM'table' WHERE(姓氏LIKE'%%') – unforgiven

+0

很好。仍然添加該約束! – jarlh

0

即使整潔:

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

輸出:

選擇單個空格

2

如果你想找到記錄其中有一個以上的空間,那麼你可以使用下面的技巧:

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

Th查詢將在surname列中檢測到兩個或更多空格。如果你也想做一個UPDATE這是可能的,但它會是相當數據庫特定的,並且在我寫這個答案的時候你沒有指定你的數據庫。

相關問題