首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >T-SQL在两个已知字符串之间提取字符串

T-SQL在两个已知字符串之间提取字符串
EN

Stack Overflow用户
提问于 2020-07-24 02:49:20
回答 2查看 75关注 0票数 1

我有以下文本:

“原创-牛跳过月亮- 20200723 --新--牛跳过太阳-”

我正在尝试编写一个t-sql查询,它将提取字符串"Original -“和下面的”-“之间的所有内容,因此我的结果将是:

“原创-母牛跳过了月亮-”

我试着写了这样的东西:

代码语言:javascript
复制
declare @Text nvarchar(max) = 'Original ----- The cow jumped over the moon ----- 20200723 --NEW-- The cow jumped over the sun ----- '
select SUBSTRING(@Text, CHARINDEX('Original ----- ', @Text)
, CHARINDEX(' ----- ',@Text) - CHARINDEX('Original ----- ', @Text) + Len(' ----- '))

但它只返回Original -----。请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-24 03:53:41

CHARINDEX has a third, optional argument,这是开始。按如下所示修改您的查询,以便在第一次出现后开始查找-。

代码语言:javascript
复制
select SUBSTRING(@Text, CHARINDEX('Original ----- ', @Text)
, CHARINDEX(' ----- ',@Text, CHARINDEX('Original ----- ', @Text) + len('Original ----- '))) + '-----';

A quick Fiddle to demonstrate

票数 1
EN

Stack Overflow用户

发布于 2020-07-24 06:10:45

您可以依赖这样一个事实,即Original -----是固定数量的字符,并将该值硬编码到您的代码中。然后使用where子句或case表达式将其仅应用于以Original -----开头的子句

代码语言:javascript
复制
select 'Original ----- '+substring(col,16,charindex( '-----',col, 16)-11)
from t
where col like 'Original -----%';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63061178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档