SQL - 选择字符串的一部分

标签 sql regex sql-server-2005 string

如果我有一个简单的表,其中数据的行包含如下字符串:

/abc/123/gyh/tgf/345/6yh/5er

在SQL中,如何选出第5个和第6个斜杠之间的数据?我的每一行都只是前斜杠内的数据,我只想选择斜杠 5 和 6 之间的所有字符。

最佳答案

CLR 函数在处理字符串方面比 T-SQL 更有效。以下是一些可帮助您开始编写 CLR 用户定义函数的信息。

我认为你应该创建具有 3 个参数的函数:

  1. 您正在搜索的值
  2. 分隔符(在您的情况下:/)
  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/

相关文章:

mysql - 使用 MAX() 从检索到的列中获取相关数据

c# - 构建正则表达式模式以最终从数据中选择所需的文本

regex - htaccess URL 重定向的正则表达式

sql-server-2005 - 如何将 SSIS 包添加到 SQL Server 2005 上的 MSDB 数据库?

java - 如何使用 SQL 在数据库中插入当前日期和时间?

mysql - 时间戳字段上的 ORDER BY 使我的查询变慢。如何优化呢?

php - mysql 条件查询

ruby - 如何替换字符串中的特定字符以及紧邻的下一个字符

mysql - SSIS将英文BlobColumn转换为以汉字结尾的字符串

sql-server-2005 - 更新 SQL 中许多相似列的有效方法?