SQL Server在冒号之前和分号后替换所有值

Moo*_*ons 1 sql t-sql sql-server substring

我有专栏说Test.

该测试有类似的值asp:test;abca,asps:tesst;abcsa,asssp:tsest;assbca

我只对之前;和之后的文本感兴趣:,所以我的结果应该是这样的

test, tesst, tsest
Run Code Online (Sandbox Code Playgroud)

我只是想用SQL查询来做,而不是编写代码.

SQL Server是否支持某种正则表达式?

任何帮助表示赞赏.

编辑

重要的部分是某些值可能没有;,:因此我的查询也应该没有失败,可能会对此进行某种检查

Mik*_*son 5

declare @T table
(
  Col varchar(20)
)

insert into @T values
('asp:test;abca'), 
('asps:tesst;abcsa'), 
('asssp:tsest;assbca'),
('asssp:tsestassbca'),
('asssptsest;assbca'),
('asssptsestassbca'),
(':;')

select  left(T2.Col, charindex(';', T2.Col+';')-1) 
from @T as T1
  cross apply (select stuff(T1.Col, 1, charindex(':', T1.Col), '')) as T2(Col)
Run Code Online (Sandbox Code Playgroud)

  • 哇!看起来像黑魔法和伏都教 - 但它确实有效!:-) (2认同)