T-SQL анализирует часть строки - PullRequest
0 голосов
/ 19 ноября 2010

Пожалуйста, помогите мне с запросом T-SQL в SQL 2008, чтобы получить значение от первой двойной кавычки до второй двойной кавычки.В строке будет много двойных кавычек.XXX будет иметь переменную длину.

Например, он вернет abc@pluto.com Столбец

XXX Usr = "abc@pluto.com" zone = "fyrkkk =" 0 "htyy"ukbpfrttt897 = "009" /

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 19 ноября 2010

Используйте CHARINDEX, чтобы найти двойные кавычки, и SUBSTRING, чтобы получить строку

1 голос
/ 14 января 2011

Это похоже на неправильный синтаксис XML для меня.

DECLARE @XMLData XML = N'<Node Usr="abc@pluto.com" zone="" fyrkkk="0" htyy="" ukbpfrttt897="009" />'

SELECT tab.col.value('@Usr','NVARCHAR(128)') AS UserMail
   FROM @XMLData.nodes('/Node[1]') AS tab(col)
0 голосов
/ 19 ноября 2010

Вам нужна комбинация CHARINDEX (), чтобы найти расположение кавычек, и SUBSTRING (), чтобы выбрать часть строки, которую вы хотите, когда вы знаете эти индексы. К сожалению, CHARINDEX () дает ПЕРВЫЙ случай, так что это потребует некоторой работы.

SELECT SUBSTRING(column, CHARINDEX('"', column), CHARINDEX('"', SUBSTRING(column, CHARINDEX('"', column), 100)))

Чтобы лучше это понять, замените CHARINDEX ('"', столбец) на q1 (индекс первой кавычки)

SELECT SUBSTRING(column, q1, CHARINDEX('"', SUBSTRING(column, q1, 100)))

Перенести подстроку столбца из q1 в (индексировать первое вхождение "во всем после q1). 100 может быть любым целым числом, превышающим максимальную длину этого письма, я хотел убедиться, что вторая цитата включена и нет проблема повторяется. Поиграйте с этим, может быть ошибка "один за другим"

SUBSTRING (слово, начало, длина) http://msdn.microsoft.com/en-us/library/ms187748.aspx CHARINDEX (слово, символ)

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