我有以下文字:
“原始-----奶牛跳过月球-----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 -----
. 请帮帮我!
2条答案
按热度按时间euoag5mw1#
CHARINDEX
有第三个可选参数,这是开始。修改您的查询如下开始寻找---在第一次出现之后。一把快速的小提琴来演示。
smdnsysy2#
你可以相信
Original -----
是一个固定数量的字符和硬代码,它的值进入您的代码。那么要么用where
子句或acase
表达式只应用于以Original -----
```select 'Original ----- '+substring(col,16,charindex( '-----',col, 16)-11)
from t
where col like 'Original -----%';