Интервал чтения из строки в SQL - PullRequest
1 голос
/ 08 декабря 2011

У меня есть строка (с пробелами), от которой я хочу отделить последнее слово. Например:

"Steve Jobs" => Jobs
"Stack OverFlow Question" => Questions

Есть ли какая-либо функция в PL / SQL или SQL, чтобы я мог получить результаты в виде Jobs и Question отдельно?

Ответы [ 2 ]

5 голосов
/ 08 декабря 2011

Вы можете использовать INSTR и SUBSTR.INSTR говорит вам положение конкретного персонажа.Передача -1 для начальной позиции говорит Oracle начать смотреть конец строки назад к передней части строки.

SQL> ed
Wrote file afiedt.buf

  1  with x as (
  2    select 'Steve Jobs' str from dual union all
  3    select 'Stack Overflow Question' from dual
  4  )
  5  select substr( str, instr( str, ' ', -1 ) + 1 ) last_word
  6*   from x
SQL> /

LAST_WORD
----------------------------------------------------------------------  
Jobs
Question
0 голосов
/ 08 декабря 2011

Вот способ сделать это в Microsoft SQL.Концепция должна работать так же с изменениями строковых функций в синтаксисе Oracle.

declare @fldName varchar(30)
set @fldName = 'Steve Jobs'

select reverse(substring(reverse(@fldName),1,charindex(' ',reverse(@fldName))-1))

set @fldName = 'Stack Overflow Question'

select reverse(substring(reverse(@fldName),1,charindex(' ',reverse(@fldName))-1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...