我有以下文本:
“原创-牛跳过月亮- 20200723 --新--牛跳过太阳-”
我正在尝试编写一个t-sql查询,它将提取字符串"Original -“和下面的”-“之间的所有内容,因此我的结果将是:
“原创-母牛跳过了月亮-”
我试着写了这样的东西:
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 -----。请帮帮我!
发布于 2020-07-24 03:53:41
CHARINDEX has a third, optional argument,这是开始。按如下所示修改您的查询,以便在第一次出现后开始查找-。
select SUBSTRING(@Text, CHARINDEX('Original ----- ', @Text)
, CHARINDEX(' ----- ',@Text, CHARINDEX('Original ----- ', @Text) + len('Original ----- '))) + '-----';A quick Fiddle to demonstrate。
发布于 2020-07-24 06:10:45
您可以依赖这样一个事实,即Original -----是固定数量的字符,并将该值硬编码到您的代码中。然后使用where子句或case表达式将其仅应用于以Original -----开头的子句
select 'Original ----- '+substring(col,16,charindex( '-----',col, 16)-11)
from t
where col like 'Original -----%';https://stackoverflow.com/questions/63061178
复制相似问题