SQL как извлечь середину строки
Я хочу получить только номер единицы из этой строки:
'<p>The status for the Unit # 3546 has changed from % to OUTTOVENDOR</p>'
Примечание всегда точно такое же, но номер единицы изменяется. Как извлечь только номер единицы?
спасибо!
6 ответов
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)
попробуй:
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))
вы можете сделать это любым способом, использовать функцию REPLACE для удаления любой стороны, использовать подстроку, если вы гарантированно знаете номера индексов или смешиваете подстроку с CHARINDEX.
вот версия, которая использует 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))))