第 N 个匹配之前的 SQL 文本?

标签 sql sql-server pattern-matching substring

使用 SQL,我想返回列中第三个正斜杠之前的所有文本

所以

/one/two/three/whatever/testing

将返回:

/one/two/three

有什么快速而肮脏的方法可以在 SQL 中执行此操作(特别是 MS SQL 2005+ 下的 MS T-SQL)?

最佳答案

既然你说“快速而肮脏”,我假设这个非常快速且非常肮脏的解决方案不会收到一堆反对票。下面的 SQL 使用多个 SUBSTRING() 函数来查找第三个斜杠:

DECLARE @str VARCHAR(50)
SET @str = '/one/two/three/whatever/testing'
SELECT SUBSTRING(@str, 0, CHARINDEX('/', @str, CHARINDEX('/', @str, CHARINDEX('/', @str, CHARINDEX('/', @str, 0) + 1) + 1) + 1))

您可以看到一个工作示例 here .

关于第 N 个匹配之前的 SQL 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163645/

相关文章:

SQL 2008-varchar(max)与文本数据类型

sql-server - SQL SERVER - 使用 JOIN 返回 OUTPUT INSERTED.*?

sql - 我应该使用生效日期还是开始日期和结束日期进行历史记录?

sql - SQLite模式匹配(不包含内容)

bash - Bash 中的模式匹配

php - 查询在 mysql 终端中有效,但在 php 中无效

mysql - 如何使用给定的表进行选择?

C# 在 SQL 中编辑行

python - 在Python中通过正则表达式提取重复项

sql - 这个sql做什么