SQLXML XQuery 関数/メソッド (doc.value() など) の使用は、一般的にコストがかかるため、可能な限り避ける必要があります。この場合、提供された情報に基づいて、CHARINDEXを使用して必要なものを取得できます。
(n)varchar フィールドを使用している場合は、次のようにすることができます。
declare @mytab table (doc varchar(max))
insert into @mytab values ('<SendDocument DocumentID="1234567">true</SendDocument>');
SELECT SUBSTRING(ci,1,CHARINDEX('"',ci)-1)
FROM (SELECT SUBSTRING(doc, CHARINDEX('DocumentID="',doc)+12,20) FROM @mytab) start(ci);
XML フィールドを操作している場合は、次のようにすることができます。
declare @mytab table (doc xml);
insert into @mytab values ('<SendDocument DocumentID="1234567">true</SendDocument>');
SELECT SUBSTRING(ci,1,CHARINDEX('"',ci)-1)
FROM
(
SELECT SUBSTRING
(
CAST(doc AS varchar(max)),
CHARINDEX('DocumentID="', CAST(doc AS varchar(max)))+12,
20
)
FROM @mytab
) start(ci);