如果我有一个简单的表,其中数据的行包含如下字符串:
/abc/123/gyh/tgf/345/6yh/5er
在SQL中,如何选出第5个和第6个斜杠之间的数据?我的每一行都只是前斜杠内的数据,我只想选择斜杠 5 和 6 之间的所有字符。
最佳答案
CLR 函数在处理字符串方面比 T-SQL 更有效。以下是一些可帮助您开始编写 CLR 用户定义函数的信息。
我认为你应该创建具有 3 个参数的函数:
- 您正在搜索的值
- 分隔符(在您的情况下:/)
- 您要查找的实例(在您的情况下:5)
然后根据分隔符进行拆分(分成数组)。然后返回数组中的第 5 项(索引 4)
这是一个 t-sql 解决方案,但我真的相信 CLR 解决方案会更好。
DECLARE @RRR varchar(500)
SELECT @RRR = '/abc/123/gyh/tgf/345/6yh/5er'
DECLARE
@index INT,
@INSTANCES INT
SELECT
@index = 1,
@INSTANCES = 5
WHILE (@INSTANCES > 1) BEGIN
SELECT @index = CHARINDEX('/', @RRR, @index + 1)
SET @INSTANCES = @INSTANCES - 1
END
SELECT SUBSTRING(@RRR, @index + 1, CHARINDEX('/', @RRR, @index + 1) - @index - 1)
关于SQL - 选择字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338412/