2012-07-04 25 views

回答

0

不幸的是,字符串操作函數因數據庫而異,所以我可以給SQL Server方言。如果您使用的是不同的數據庫,你必須找到替代LENREPLACE

declare @Names table (e_id int,ename varchar(3000)) 
insert into @Names (e_id, ename) values 
(1,'hansen sahul'), 
(2,'dennis richard rathore') 

select e_id,LEN(ename) - LEN(REPLACE(ename,' ','')) + 1 as namecount 
from @Names 

結果:

e_id  namecount 
----------- ----------- 
1   2 
2   3 

這工作被計算在普通字符串之間的長度差,以及空格已被刪除的字符串。這在邏輯上等於字符串中的空格數量。然後,我們添加1以匹配您想要的結果(名稱數量,而不是空格數量)。

(該表的設置也是方言,但只是在那裏幫助建立一個工作腳本)

+0

如果可能的話,應該首先規範空白(如何取決於你的RDBMS),這樣如果你在開始或結束時有兩個空格或一個空格,你就不會得到不好的結果。 –

+0

@ctrahey - 是的,許多其他清理操作也可能是必需的(例如,可能有其他空格字符而不是空格)。 OTOH,也許我們很幸運,OP已經有了一個很好的'CHECK'約束來防止這些值出現在表中。 :-) –

+0

雅這是工作感謝 – user1500707

相關問題