2014-08-29 5 views
0

У меня есть имя устройства столбца с именем, которое имеет данные, такие как:Извлечение данных из столбца с помощью SQL

Drivers/BacnetIdentifiers/FP VeV 4-01 Training Lobby 
Drivers/BacnetIdentifiers/FP CaV 4-01 Training Lobby 
Drivers/BacnetIdentifiers/FP altu 4-01 auditorium 
Drivers/BacnetIdentifiers/devicegn/FP altu 4-01 auditorium 

Необходимо извлечь данные после того, как последний «/» с помощью SQL. Может кто-то может помочь здесь?

ответ

0
SELECT SUBSTR 
     (
      "device" , 
      INSTR("device" , '/', -1)+1, 
      INSTR("device" , '/', -1) 
     ) 
FROM Devices 

Объяснение:

SUBSTR: Это функция, которая возвращает часть строки. Требуются следующие 3 аргумента:

Initial string: Это строка, в которой вам нужно принять участие. В вашем случае это столбец таблицы.

Start Index: Это индекс начальной строки, в которой должна начинаться ваша часть.

Length: Это длина части, которую вы хотите вернуть.

Пример

SUBSTR('ABCDEF',3,2) -- Returns 'CD' 

Получат 2 символов, начиная с третьей строкой 'ABCDEF'.

Для возврата в ваш случай Initial string - столбец. Start index должен быть последним индексом (последним вхождением) символа '/'. Для того, чтобы найти это, мы будем использовать следующую функцию:

INSTR: Это функция, которая возвращает местоположение строки в строке и имеет следующие аргументы:

Initial string: Это строка, внутри которой вы хотите найти подстроку

substring: Это то, что вы ищете.

Start position: В каком месте первой строки вы начинаете поиск. Если это отрицательное число, вы начинаете с конца строки до начала. В вашем случае мы ищем первое вхождение '/' из конца вашей строки.

Пример

INSTR('Drivers/BacnetIdentifiers/FP VeV 4-01 Training Lobby' , '/', -1) -- Returns 26 

Это вернет 27, который является первым вхождением символа «/» от конца строки

LENGTH: это функция, которая возвращает длину указанная строка.

Пример

LENGTH('ABCDEF') -- Returns 6 

Объединяя все эти мы говорим, что мы хотим количества charachters после последнего вхождения «/» в пределах стоимости нашей колонки.

+0

он отлично работает спасибо .... можете ли вы объяснить логику – user3867937

+0

Проверьте мое редактирование для получения дополнительной информации. Я также нашел логическую ошибку, которая при работе была дополнительной болью. –

+0

спасибо за подробное объяснение – user3867937

0

regexp_replace(your_string, '^.*/')

+0

это будет имя столбца. Я не могу определить данные перед началом работы. – user3867937

+0

это хорошо работает..отчет – user3867937

+0

что делает ^. */Does ????????????? – user3867937

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