一尘不染

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

sql

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

所以

/one/two/three/whatever/testing

会返回:

/one/two/three

在SQL中执行此操作的任何快速且肮脏的方法(特别是MS SQL 2005+下的MS T-SQL)吗?


阅读 155

收藏
2021-05-16

共1个答案

一尘不染

由于您说的是“快速又肮脏”,因此我假设这种非常快速且非常肮脏的解决方案不会收到很多反对意见。下面的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))

您可以在此处看到一个有效的示例。

2021-05-16