如何在SQL Server中提取字符串最右侧的连续两个字母?
SQL Server提取字符串最右侧连续两个字母
针对你需要从字母数字组合字段中提取最右侧连续两个字母(且这两个字母后仅含数字)的需求,可以通过SQL Server的字符串函数组合实现:
实现代码
SELECT original_str, REVERSE(SUBSTRING(REVERSE(original_str), PATINDEX('%[^0-9]%', REVERSE(original_str)), 2)) AS target_chars FROM ( -- 示例数据 VALUES ('RT34-92837DF82982'), ('DRE3-9292928373DO') ) AS test_data(original_str)
结果说明
执行上述SQL后,会得到如下结果:
| original_str | target_chars |
|---|---|
| RT34-92837DF82982 | DF |
| DRE3-9292928373DO | DO |
逻辑解释
REVERSE(original_str):将原字符串反转,让原本末尾的数字移到前端,目标字母则位于数字之后(反转后的字符串顺序)。PATINDEX('%[^0-9]%', REVERSE(original_str)):定位反转后字符串中第一个非数字字符的位置,也就是目标字母在反转字符串中的起始位置。SUBSTRING(..., 定位位置, 2):从该起始位置截取2个字符,得到反转后的目标字母(比如原字符串的DF反转后是FD,截取后为FD)。- 外层
REVERSE:将截取后的字符再次反转,恢复为原顺序的目标字母。
这个方案完全适配你描述的场景——目标字母后仅存在数字,若后续有其他特殊场景,可根据实际调整函数参数。
内容的提问来源于stack exchange,提问作者Padawan
相关产品推荐
相关产品推荐

