在 SQL Server 中,有多种方法可以将字符串根据特定字符分割为多个子字符串。以下是其中一种方法:

假设有一个名为 'str' 的字符串变量,它包含逗号分隔的多个子字符串,我们想要确定某个子字符串是第几个。可以使用以下查询:

DECLARE 'str' VARCHAR(100) = 'apple,banana,orange,grape';
DECLARE 'search' VARCHAR(50) = 'orange';

SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS [Index]
FROM STRING_SPLIT('str', ',')
WHERE value = 'search';

解释一下上面的查询:

  • 使用 STRING_SPLIT 函数将 'str' 字符串分割为多个子字符串。这个函数需要 SQL Server 2016 及以上版本才支持。
  • WHERE 子句过滤出符合条件的子字符串。
  • 使用 ROW_NUMBER() 函数生成一个序号,表示每个子字符串在原字符串中的位置,从 1 开始。
  • ORDER BY (SELECT NULL) 是为了不排序,保证子字符串的位置与原字符串中的位置一致。

如果 'search' 是 'orange',则上面的查询结果是:

Index
-----
3

表示 'orange' 是第 3 个子字符串。

SQL Server 字符串分割:查找子字符串的位置

原文地址: https://www.cveoy.top/t/topic/lHdI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录