2015-02-20 2 views
0

У меня есть SQL-запрос, который возвращает следующий результат.Получить отдельную подстроку в SQL

Запрос

SELECT DISTINCT Path from MyTable; 

Результат

+-------------------------+ 
|  Path    | 
+-------------------------+ 
| home/MYPATH1/xxx/yyy | 
| home2/MYPATH2/xxxx/yyyy | 
+-------------------------+ 

и так далее ..

Я хочу, чтобы извлечь только второй член пути вернулся.
i.e MYPATH1 и MYPATH2.

Может ли кто-нибудь сказать мне, как это сделать? Спасибо и с уважением.

+0

Я новичок. Я попытался использовать подстроку (instr()), но не работал. – Tania

ответ

3

Может достичь этого с помощью SUBSTRING_INDEX.

Read here to know more about SUBSTRING_INDEX

Запрос

SELECT SUBSTRING_INDEX 
(
    SUBSTRING_INDEX 
    (
    `path`,'/',2 
),'/',-1 
)AS `path` 
FROM myTable; 

Fiddle demo

+0

Это работает отлично. :) Спасибо. – Tania

+0

Спасибо за форматирование – Tania

+0

Привет, почему я получаю сообщение об ошибке, если я добавлю ключевое слово "distinct" перед substring_index по этому запросу? – Tania

2

Для этого вы можете использовать функцию substring_index().

mysql> select substring_index(substring_index('home/MYPATH1/xxx/yyy','/',2),'/',-1) as path; 
+---------+ 
| path | 
+---------+ 
| MYPATH1 | 
+---------+ 

mysql> select substring_index(substring_index('home2/MYPATH2/xxxx/yyyy','/',2),'/',-1) as path; 
+---------+ 
| path | 
+---------+ 
| MYPATH2 | 
+---------+ 
1 row in set (0.00 sec) 
+0

Тот же ответ, что и Ullas's. Несмотря на то, что вы ответили первым, я думаю, что отсутствие удобочитаемости - это то, почему у вас не получилось. Сделайте его немного читабельнее и проще. –

Смежные вопросы