如何编写SQL提取1000字符后或最近句号后的剩余文本
提取剩余文本的反向SQL解决方案
原SQL逻辑回顾
Solomon Rutzky编写的以下SQL语句,用于截取文本的前1000字符,且在这1000字符范围内保留到最后一个句号为止的内容:
LEFT(LEFT(@Text, 1000), 1001 - CHARINDEX('.', REVERSE(LEFT(@Text, 1000))))
反向逻辑SQL实现
要提取上述截取位置之后的剩余文本,可通过以下SQL实现:
SELECT SUBSTRING(@Text, LEN(LEFT(LEFT(@Text, 1000), 1001 - CHARINDEX('.', REVERSE(LEFT(@Text, 1000) + '.')))) + 1, LEN(@Text)) AS RemainingText;
逻辑说明
- 处理无句号场景:在
REVERSE(LEFT(@Text, 1000) + '.')中额外添加一个句号,避免原前1000字符无句号时CHARINDEX返回0,确保截取长度计算准确。 - 计算已截取长度:复用原SQL的逻辑,算出已截取部分的总长度。
- 提取剩余内容:用
SUBSTRING从已截取长度的下一位开始,提取到文本末尾的所有内容。如果原文本已被完全截取,结果会返回空字符串,符合预期。
内容的提问来源于stack exchange,提问作者IrishSQL
相关产品推荐
相关产品推荐

