在 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 个子字符串。

sqlserver 将一个字符串以,分割判断是第几个

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

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