SQL как извлечь середину строки - PullRequest
6 голосов
/ 09 сентября 2010

Я хочу получить только номер единицы из этой строки:

'<p>The status for the Unit # 3546 has changed from % to OUTTOVENDOR</p>'

Примечание всегда точно такое же, но номер единицы изменяется.Как извлечь только номер устройства?

Спасибо!

Ответы [ 6 ]

6 голосов
/ 09 сентября 2010
declare @String varchar(500)

set @String = '<p>The status for the Unit # 3546 has changed from % to OUTTOVENDOR</p>'

select SUBSTRING(@String, charindex('# ', @String) + 2, charindex('has changed', @String) - charindex('# ', @String) - 2)
1 голос
/ 09 сентября 2010

попробуй:

  declare @S VarChar(1000)
  Set @S = 
  '<p>The status for the Unit # 3546 has changed from % to OUTTOVENDOR</p>'
  Select Substring( @s, 
         charIndex('#', @S)+1, 
         charIndex('has', @S) - 2 - charIndex('#', @S)) 
0 голосов
/ 09 сентября 2010

Вот версия, которая использует PATINDEX.Он ищет первое число в строке.

declare @MyString varchar(100) 
set @MyString = '<p>The status for the Unit # 3546 has changed from % to OUTTOVENDOR</p>'

select PATINDEX('%[0-9]%', @MyString), PATINDEX('%[^0-9]%', SUBSTRING(@MyString, PATINDEX('%[0-9]%', @MyString), len(@MyString)))

select SUBSTRING (@MyString, PATINDEX('%[0-9]%', @MyString),
    PATINDEX('%[^0-9]%', SUBSTRING(@MyString, PATINDEX('%[0-9]%', @MyString), len(@MyString))))
0 голосов
/ 09 сентября 2010

Примерно так должно работать SUBSTRING (val, 30, CHARINDEX ('', val, 30) -30)

0 голосов
/ 09 сентября 2010
select substring(note, len('<p>The status for the Unit # '),4) from tbl
0 голосов
/ 09 сентября 2010

Вы можете сделать это любым количеством способов, использовать функцию REPLACE, чтобы раздеть любую сторону, использовать SUBSTRING, если вам гарантировано знать номера индекса или смешать SUBSTRING с CHARINDEX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...