2011-02-23 3 views
0

SQL Server 2008 데이터베이스가 있습니다. 모두가 같은 모양SQL Server 2008 데이터베이스에서 SQL XML의 XML을 쿼리하는 방법

Id   int  PK  
DocumentXml xml 

는 XML 문서 : 다음과 같은 스키마를 Documents라는 테이블이 있습니다

내가 /docroot/name의 텍스트 값 "는로 시작되는 모든 레코드를 선택합니다
<docroot> 
    <name>Some Name</name> 
</docroot> 

S "(대소 문자 구분 안함).

최상의 성능으로이 쿼리를 어떻게 실행합니까?

답변

1

확실하지 당신이 뭔가를 할 수 있지만 :

SELECT (list of columns) 
FROM dbo.Documents 
WHERE DocumentXml.value('(/docroot/name)[1]', 'varchar(100)') LIKE 'S%' 

데이터베이스 데이터 정렬이 대소 문자를 구별하지 않으면, 이 LIKE 작업도 대/소문자를 구분하지 않습니다.

1

나는 이 /docroot/name의 텍스트 값이 "S"(대소 insenstive)로 를 시작하는 모든 레코드를 선택합니다.

사용이 XPath 식 : - 성능에 대한

/*/name[starts-with(translate(.,'S','s'), 's')] 
+0

+1은 순수한 XPath 방식입니다. – Flack

+0

XPath는 좋지만 문제가있는 부분은 XPath와 SQL을 결합하는 것입니다. – smartcaveman

+0

@smartcaveman : 죄송합니다. 거기서 도울 수는 없지만 일부 지식이있는 사람들에게 물어볼 것입니다. –