У меня есть поле с чем-то вроде okbogkbogkbokgbokgobkgobkofkgbokfgbo&name=fokdofkd&okfaos
Как извлечь подстроку в SQL Server
я хотел бы извлечь name = value
из данных.
Как я могу эффективно использовать SQL Server 2008? спасибо
У меня есть поле с чем-то вроде okbogkbogkbokgbokgobkgobkofkgbokfgbo&name=fokdofkd&okfaos
Как извлечь подстроку в SQL Server
я хотел бы извлечь name = value
из данных.
Как я могу эффективно использовать SQL Server 2008? спасибо
Попробуйте это
;
With MyTable as
(
SELECT 'okbogkbogkbokgbokgobkgobkofkgbokfgbo&name=fokdofkd&okfaos' FullString
UNION
SELECT 'fkgbokfgbo&name=fokdofkd&okfaos' FullString
UNION
SELECT 'okbogkbogkbokgbok' FullString
),
PatternIndex as
(
Select
FullString + '&' FullString,
CharIndex ('&name=', FullString) + 1 LocationOfEqualSign,
CharIndex ('&', FullString, CharIndex ('&name=', FullString)+1) as NextBreak
from MyTable
),
SplitNameValue AS
(
Select
FullString,
CASE
WHEN NextBreak <> 0 THEN
SubString (FullString, LocationOfEqualSign, NextBreak-LocationOfEqualSign)
ELSE '' END
as NameValuePair
From PatternIndex
)
SELECT *
FROM SplitNameValue
Возвращает
FullString NameValuePair
--------------------------------------------------------- ---------------------------------------------------------
fkgbokfgbo&name=fokdofkd&okfaos name=fokdofkd
okbogkbogkbokgbok
okbogkbogkbokgbokgobkgobkofkgbokfgbo&name=fokdofkd&okfaos name=fokdofkd
(3 row(s) affected)
Это будет работать, я думаю:
Declare @String varchar(100)
Set @String = 'okbogkbogkbokgbokgobkgobkofkgbokfgbo&name=fokdofkd&okfaos'
Select SubString(@String,CharIndex('name=',@String),len(@String))
Это дает:
длина 9999 не является правильным, так как может следовать более и имя = значение – Matten
@Matten - Как вы знаете, что? Это не указано в вопросе. –
в названии '@ String' следует за' & okfaos' после '& name = fokdofkd', я не думаю, что' & okfao' принадлежит к ценности, которую хочет разгадать. – Matten
SELECT 'name=' + SUBSTRING(field, CHARINDEX('name=', field), CHARINDEX('&', SUBSTRING(field, CHARINDEX('name=' ,field))))
Что-то
'Name = fokdofkd & okfaos' вдоль линий ...
select substring(ColumnName, charindex('name=',ColumnName,1),len(ColumnName))
Мне нужно сначала выбрать поле из базы данных. Я не могу использовать жестко закодированное значение – Himberjack
@oshafran Посмотрите мой первый выбор под WITH - замените это на инструкцию SELECT, например 'SELECT Youfield, как FullString From YourTable' –
Неверный параметр длины передается функции LEFT или SUBSTRING. – Himberjack