sqlserver 查找某个字符在字符串中第N次出现的位置
时间: 2024-03-08 16:12:57 浏览: 113
您可以使用 SQL Server 中的 `CHARINDEX` 函数来查找某个字符在字符串中第 N 次出现的位置。该函数的语法如下:
```sql
CHARINDEX ( expressionToFind , expressionToSearch , start_location )
```
- `expressionToFind`:要查找的字符或字符串。
- `expressionToSearch`:要在其中搜索的字符串。
- `start_location`:可选参数,指定开始搜索的位置。默认为 1。
以下是一个示例查询,演示如何使用 `CHARINDEX` 函数查找字符串中第 N 次出现的位置:
```sql
DECLARE @string VARCHAR(50) = 'Hello, World! Hello, CSDN!'
DECLARE @char CHAR(1) = 'o'
DECLARE @occurrence INT = 2
SELECT CHARINDEX(@char, @string,
(SELECT pos.start_location FROM
(SELECT pos.start_location, ROW_NUMBER() OVER(ORDER BY pos.start_location) AS rn
FROM (SELECT start_location = CHARINDEX(@char, @string, 1)) AS pos) AS pos_rn
WHERE pos_rn.rn = @occurrence - 1)) AS position
```
在上述示例中,我们将字符串 `'Hello, World! Hello, CSDN!'` 中的字符 `'o'` 的第二次出现的位置作为结果返回。请注意,`pos.start_location` 子查询用于获取前 N-1 次出现的位置。
请根据您的实际情况修改查询中的变量和表达式。
阅读全文