[英]Count of numbers followed by pipe symbol in a single data of a column in SQL Server
LEN(Column)-len(Replace(Column,'|','')
將給出 SQL 服務器的單行數據中可用的 Pipe 的總數。
但我需要計算有 Pipe 符號緊跟數字的記錄數,
**Eg 1:** MNY-THY-**2|** *YUI_WER-NA|JIU-ERT-**8|***
上述記錄的 output 為2 。
**Eg 2:** *MNY-YU-NA|*
output 為0
**Eg 3:** *MNY-9876**5|***
output 為1
根據建議的答案更新我的問題:
**Eg 4:** MNY-YU-1234
output 為0因為沒有“|” 在我的示例 4 中,結果應僅為 0。
任何建議都會得到高度支持。
如果您使用 SQL Server 2016+,則STRING_SPLIT()
是一個選項:
桌子:
SELECT *
INTO Data
FROM (VALUES
('MNY-THY-2| YUI_WER-NA|JIU-ERT-8|'),
('MNY-YU-NA|'),
('MNY-98765|'),
('FGL_NU_0003')
) v (TextData)
陳述:
SELECT *
FROM Data d
OUTER APPLY (
SELECT COUNT(*) AS NumberCount
FROM STRING_SPLIT(d.TextData, '|') s
WHERE (d.TextData LIKE '%|%') AND (RIGHT(s.[value], 1) LIKE '[0-9]')
) a
結果:
TextData NumberCount
MNY-THY-2| YUI_WER-NA|JIU-ERT-8| 2
MNY-YU-NA| 0
MNY-98765| 1
FGL_NU_0003 0
您可以根據“|”拆分字符串並檢查右側的值是否包含數字。
DECLARE @tosearch VARCHAR(MAX)='%[0-9]|%' ,@string VARCHAR(MAX)='FGL_NU_0003'
SELECT COUNT(CASE WHEN RIGHT(VALUE,1) LIKE '[0-9]' THEN 1 ELSE NULL END)
FROM STRING_SPLIT(@string,'|')
WHERE @string LIKE '%|%'
預期 Output:
MNY-YU-1234 - 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.