sql - 如何检索两个相似字符之间的值

标签 sql sql-server substring charindex

我有以下示例数据和迄今为止我尝试过的查询 -

DECLARE @X TABLE (TAG VARCHAR(MAX))

INSERT INTO @X 
VALUES ('59D:$%$%$%$%^MESSAGE1^$%$%$%$%'),
       ('59D:--^MESSAGE2^$%$%$%$%')

SELECT * 
FROM @X

SELECT SUBSTRING(TAG,CHARINDEX('^',TAG)+1,LEN(TAG)-CHARINDEX('^',TAG))
FROM @X;

我想选择^之间的所有内容。所以在这种情况下,我的输出应该是 MESSAGE1MESSAGE2

最佳答案

select 
substring(tag,charindex('^',tag)+1, len(tag) - charindex('^',reverse(tag)) - charindex('^',tag))
from @x

您可能还想排除字符串中 ^ 少于 2 个的情况。在这种情况下,您应该添加一个 where 子句

WHERE len(tag) - len(replace(tag,'^','')) >= 2

关于sql - 如何检索两个相似字符之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32336433/

相关文章:

mysql - 依赖2条对Mysql中 "same"列的查询

sql - MySQL 每天按值(value)排名

MySQL ORDER BY 使用文件排序(2 个连接表)

sql-server - 如何获取以下场景的 CSV 值

sql-server - SQL Server Integration Services SSIS 2005 - 如何让用户运行包?

sql-server - 如何从 SSIS 控制流检查作业状态?

MySQL在小数点后转换丢失数字的子串

java - JAVA/Android中从字符串中提取多个子字符串

mysql - 删除和更新时的默认值是什么

mysql - 如何按列值限制查询