Я пытаюсь получить подстроку, FIRST_NAME
, значение атрибута от ADDRESS_XML
столбец в таблице, используя простой запрос выбора. Тип столбца: varbinary(1000)
.Как получить значение подстроки из столбца Sql типа varbinary?
GetXml
- это специальный метод, определенный в другом месте, который отлично работает.
Мои, где положение является
dbo.GetXml(ADDRESS_XML).exist('xpathExpression') = 1
Ниже одна строка столбца ADDRESS_XML:
<PostalAddress xmlns="http://tempuri.org/PostalAddress.xsd">
<PostalAddress TITLE="Mr" FIRST_NAME="John" LAST_NAME="SMITH"
ADDRESS="207a Stratford Road, Shirley" CITY="Solihull"
COUNTY="West Midlands" POSTCODE="B90 3AH"
COUNTRY="United Kingdom" CONTACT_INFO=""
EMAIL_ADDRESS="" PHONENO="" />
</PostalAddress>
Что должно быть выражение XPath?
Я использую SQL Server 2008 R2 Express В столбце varbinary хранится строка как hex, поэтому я использую на ней собственный метод GetXml().
*** Почему *** вы хранящей совершенно правильный XML в 'столбце VARBINARY'?!?!? Не имеет никакого смысла ..... если выглядит как XML, пахнет XML, трюки, такие как XML, - это, вероятно, ** IS ** XML и должно рассматриваться как таковое и храниться ** как ** 'XML' ... .. –
Я на работе - у меня нет контроля над плохими практиками нашей кодовой базы :) – 2014-09-09 13:15:38
Ваши вопросы непонятны. Вы говорите о XML, хранящемся как varbinary, но у вас есть функция, которая возвращает XML, так что часть уже позаботилась о правильном? Вы хотите, чтобы выражение XPath получало значение 'FIRST_NAME', и ваш примерный запрос использует' exist' в предложении where, которое является проверкой существования узлов вместо возвращаемых значений. Вы не можете вернуть значение в 'exist'. Вы можете сравнить значение 'FIRST_NAME' с константой или переменной, но это не похоже на то, что вы ищете. –