我有以下示例:
declare @test1 varchar(max) = 'Month 05/2022, Ord195506 Cst373175'
declare @test2 varchar(max) = 'Month 05/2022, Ord195506 Cst373175, something...'
select SUBSTRING(@test, PATINDEX('%Ord[0-9][0-9][0-9][0-9][0-9][0-9]%', @test1) 3, 6)
我需要得到以下值:
- 05/2022
- 195506
- 373175
需要注意的是,后面的數字Ord并Abo沒有固定為6的長度。它們可以是從1到任何數字。
PATINDEX甚至可以在沒有大量和SUBSTRING的情況下將字串拆分為所需的值RIGHT嗎?
uj5u.com熱心網友回復:
對于您問題中的示例,您可以在空間上string_split字串中的元素,然后使用translate洗掉非數字元素,例如:
declare @test1 varchar(max) = 'Month 05/2022, Ord195506 Cst373175'
select result
from (select @test1)t(test)
cross apply(
select Trim(Translate([value],'abcdefghijklmnopqrstuvwxyz,',Space(27))) result
from String_Split(test, ' ')
)s
where result !='';
示例 DB<>Fiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/493663.html
下一篇:T-SQL中的條件選擇陳述句
