SQL - 根据索引获取在变量和子字符串中找到的分隔符的索引

杰姆斯凯尔

我需要获取在多个相同符号中找到的最后一次出现的符号。

SELECT Charindex('|', 'abc||xyz')

这将导致 4,但我需要获取最后一个'|'的索引 这是 5 的索引。然后根据该索引对字符串进行子串。

编辑:对不起,我之前的问题错了。我忘了提到字符串可能包含更多数量的字符和符号。

如果字符串'abc||xyz',@forpas 答案是正确的。

但是如果字符串是 'abc||xyz|||qwe' 就会出错

编辑 2:基本上我想在循环字符串时对包含分隔符的字符串进行子串。

Declare 
    @txt as nvarcar(max), 
    @newTxt as nvarchar(50)
SET @txt = 'dog|cat|||fish|horse||||frog'

--while looping

--1st loop:
@newTxt = 'dog|'
@txt = 'cat|||fish|horse||||frog'

--2nd loop:
@newTxt = 'cat|||'
@txt = 'fish|horse||||frog'

--3rd loop:
@newTxt = 'fish|'
@txt = 'horse||||frog'
...

UPDATE最初的问题是关于在给定字符串中查找索引。但是由于信息不足导致多次更新,另一个答案与新问题冲突。在第二版之后,我正在做的整个过程突然被接受的答案完成了。因此,问题的标题和一些上下文已更新,以便此线程有用。

丹尼尔·布鲁赫拉

您可以使用此 SplitString 函数来获取值列表及其找到的索引并使其适应您的目的....

CREATE FUNCTION [dbo].[fn_SplitString2] 
( 
    @string NVARCHAR(MAX), 
    @delimiter CHAR(1) 
) 
RETURNS @output TABLE(id int not null primary key identity, splitdata NVARCHAR(MAX), startindex int) 

BEGIN 
    DECLARE @start INT, @end INT 
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
    WHILE @start < LEN(@string) + 1 BEGIN 
        IF @end = 0  
            SET @end = LEN(@string) + 1

        INSERT INTO @output (splitdata, startindex)  
        VALUES(SUBSTRING(@string, @start, @end - @start), @start) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(@delimiter, @string, @start)

    END 
    RETURN 
END



DECLARE @st VARCHAR(100) = 'dog|cat|||fish|horse||||frog';

SELECT *
FROM [dbo].[fn_SplitString2](@st, '|') A
WHERE splitdata <> ''

输出:

id splitdata startindex

  • 1 狗 1

  • 2 猫 5

  • 5 鱼 11

  • 6马16

  • 10 青蛙 25

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取字符串分隔符内的子字符串 SQL Server 2012

来自分类Dev

SQL Server可以通过分隔符为文本字符串编制索引吗?

来自分类Dev

如何从SQL Server 2014中的多个分隔符(如“ \”)中提取子字符串?

来自分类Dev

如果分隔符存在,SQL选择子字符串,否则给出完整字符串

来自分类Dev

如果存在分隔符,则SQL选择子字符串,否则给出完整字符串

来自分类Dev

SQL - 基于“在第 N 个和第 N 个分隔符之间”的分隔字符串

来自分类Dev

SQL 子字符串 右字符索引

来自分类Dev

SQL Server:如何使用2个分隔符将字符串拆分为列和行?

来自分类Dev

SQL查询以选择包含“单元分隔符”字符的字符串

来自分类Dev

MS SQL 将选择合并为一个,字符分隔符字符串

来自分类Dev

在 SQL Server 中的连字符之间拆分字符串文本分隔符

来自分类Dev

使用Oracle SQL按分隔符位置拆分字符串

来自分类Dev

基于分隔符的T-SQL拆分字符串

来自分类Dev

在SQL Server中使用2个分隔符分割字符串

来自分类Dev

使用分隔符在SQL Server中分割字符串

来自分类Dev

使用 Oracle SQL 替换字符串分隔符中的列值

来自分类Dev

在分隔符后获取子字符串

来自分类Dev

子字符串SQL查询变量

来自分类Dev

如何从sql表中找到完全匹配的字符串?

来自分类Dev

从t-sql的结尾获取字符串中char首次出现的索引

来自分类Dev

根据“分隔符”将PHP字符串划分为数组子字符串

来自分类Dev

如何在字符串中分隔SQL变量

来自分类Dev

在SQL中拆分字符串以获取混合的和特定的逗号分隔值?

来自分类Dev

T-SQL函数将带有两个定界符的字符串拆分为表中的列分隔符

来自分类Dev

如何在PL / SQL中访问字符串的索引?

来自分类Dev

SQL索引字符串以提高查询速度

来自分类Dev

SQL索引字符串以提高查询速度

来自分类Dev

SQL中两个字符分隔符上的正则表达式子字符串

来自分类Dev

根据分隔符SQL Server拆分行

Related 相关文章

  1. 1

    获取字符串分隔符内的子字符串 SQL Server 2012

  2. 2

    SQL Server可以通过分隔符为文本字符串编制索引吗?

  3. 3

    如何从SQL Server 2014中的多个分隔符(如“ \”)中提取子字符串?

  4. 4

    如果分隔符存在,SQL选择子字符串,否则给出完整字符串

  5. 5

    如果存在分隔符,则SQL选择子字符串,否则给出完整字符串

  6. 6

    SQL - 基于“在第 N 个和第 N 个分隔符之间”的分隔字符串

  7. 7

    SQL 子字符串 右字符索引

  8. 8

    SQL Server:如何使用2个分隔符将字符串拆分为列和行?

  9. 9

    SQL查询以选择包含“单元分隔符”字符的字符串

  10. 10

    MS SQL 将选择合并为一个,字符分隔符字符串

  11. 11

    在 SQL Server 中的连字符之间拆分字符串文本分隔符

  12. 12

    使用Oracle SQL按分隔符位置拆分字符串

  13. 13

    基于分隔符的T-SQL拆分字符串

  14. 14

    在SQL Server中使用2个分隔符分割字符串

  15. 15

    使用分隔符在SQL Server中分割字符串

  16. 16

    使用 Oracle SQL 替换字符串分隔符中的列值

  17. 17

    在分隔符后获取子字符串

  18. 18

    子字符串SQL查询变量

  19. 19

    如何从sql表中找到完全匹配的字符串?

  20. 20

    从t-sql的结尾获取字符串中char首次出现的索引

  21. 21

    根据“分隔符”将PHP字符串划分为数组子字符串

  22. 22

    如何在字符串中分隔SQL变量

  23. 23

    在SQL中拆分字符串以获取混合的和特定的逗号分隔值?

  24. 24

    T-SQL函数将带有两个定界符的字符串拆分为表中的列分隔符

  25. 25

    如何在PL / SQL中访问字符串的索引?

  26. 26

    SQL索引字符串以提高查询速度

  27. 27

    SQL索引字符串以提高查询速度

  28. 28

    SQL中两个字符分隔符上的正则表达式子字符串

  29. 29

    根据分隔符SQL Server拆分行

热门标签

归档