我擁有名稱和姓氏的sql表。姓在自己的專欄中。問題在於有兩個姓氏的用戶,因爲他們有時會在姓氏之間添加多個空格,然後我必須找到並修正它們。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
這是可能的,但它會是相當數據庫特定的,並且在我寫這個答案的時候你沒有指定你的數據庫。
你正在使用哪個數據庫? –