簡體   English   中英

T-SQL / 查找列中的所有點

[英]T-SQL / Find all dots in a column

我有這樣的查詢:

DECLARE @TABLE TABLE (
    ID int primary key identity(1,1),
    CODE nvarchar(max)
);
INSERT INTO @TABLE VALUES ('320.01.001'),('320.01.002'),('320.001.002'),('320.01.002.0003.0002')
SELECT * FROM @TABLE 

結果:

在此處輸入圖片說明

我想計算一列中的點數。

我的例外結果:

在此處輸入圖片說明

一個非常簡單的方法是:

select t.*, s.num_dots
from @table t cross apply
     (select count(*) - 1 as num_dots
      from string_split(t.code, '.') s
     ) s;

更傳統的方法使用兩個字符串的長度之間的差異:

select t.*,
       len(t.code) - len(replace(t.code, '.', '')) as num_dots
from @table t;

我實際上不知道其中哪一個更快。 如果我不得不猜測,我會猜測第二個,但如果性能是一個問題,你應該測試兩個版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM