xml 데이터를 저장하는 데 사용되는 테이블에 varchar 열이 있습니다. 그래, 내가 사용해야하는 xml 데이터 형식을 알고 있지만 xml 데이터 형식을 사용할 수 있기 전에이 생각했다 그래서 varchar 내가 지금 사용해야하는 것입니다 생각합니다. :) 저장varchar 필드에서 SQL Server XML 문자열 구문 분석
데이터는 다음과 유사합니다
<xml filename="100100_456_484351864768.zip"
event_dt="10/5/2009 11:42:52 AM">
<info user="TestUser" />
</xml>
내가이 경우 "456"이 될 것이라고 두 개의 밑줄 사이의 숫자를 얻기 위해 파일 이름을 구문 분석 할 필요가있다. 파일 이름의 첫 번째 부분은 길이가 변경되면 안되지만 가운데 번호는 변경됩니다. 첫 번째 부분의 길이가 변경되면 작동하는 솔루션이 필요합니다 (변경해서는 안된다는 것이 항상 변할 것임을 알기 때문에 변경됩니다).
내가 지금 가지고있는 내용은 XQuery를 사용하여 파일 이름을 꺼내는 것이므로 곧바로 문자열 조작보다 낫다고 생각했기 때문입니다. 이 작업을 수행하려면 문자열을 XML로 변환해야하지만 XQuery 전문가는 아니기 때문에 문제가 발생합니다. XQuery (substring-before)에 대한 함수를 찾았지만 작동시키지 못했습니다. SQL Server에서 함수가 작동하는지조차 모르겠습니다. 쉽게이 작업을 수행 할 수있는 XQuery 함수가있을 수 있지만이를 모르고 있습니다. 나는 다음 몇 가지를 할 문자열이 다시 CAST 할 수있을 거라고 생각 것이에서
select CAST(parms as xml).query('data(/xml/@filename)') as p
from Table1
을 :
그래서, 나는 다음과 유사한 쿼리 테이블에서 파일 이름을 얻을 instring 또는 charindex 함수를 사용하여 밑줄이 어디에 있는지 파악하고 필요한 부분을 골라내는 부분 문자열 함수로 모든 것을 캡슐화 할 수 있습니다. 너무 멀리 가지 않으면이 방법으로 마침내 얻을 수 있다고 확신하지만 더 쉬운 방법이 있어야한다는 것을 알고 있습니다. 이 방법은 SQL 문에서 읽을 수없는 커다란 필드를 만들 것입니다. 비록 SQL 문에서 함수를 옮기더라도 계속 진행되고있는 상황을 파악하려고 혼란 스러울 수 있습니다.
단순한 문자열 조작으로 보이기 때문에 이보다 더 쉽습니다. 아마도 누군가 나를 올바른 방향으로 인도 할 수 있습니다. 감사합니다.
어떤 버전의 SQL Server입니까? –
죄송합니다. 지금까지이 설명을 보지 못했습니다. 현재 SQL Server 2008을 사용하고 있습니다. – Dusty