2009-04-16 4 views

답변

3

필드가 XML 유형 실제로 경우,이 쿼리는 당신이 찾고있는 무엇을 줄 것이다 :

select * from information_schema.columns 
where DATA_TYPE = 'XML' 

마크

+0

필드는 varchar입니다. 그게 상황을 조금 어렵게 만드는 것. – Lonzo

2

실행이 :

select 'select distinct ''' || a.name || '.' || b.name 
|| ''' from ' || b.name 
|| 'where ' || b.name || ' like ''%<%/>%'' union ' 
from systable a 
join syscolumns b on (a.id = b.id) 
join systypes c on (b.type = c.xtype) 
where a.type ='U' and c.name = ('CHAR', 'CHARN', 'VARCHAR', 'VARCHARN'); 

첫 번째를 결과 세트에는 데이터베이스의 문자 열당 하나의 행이 있습니다.

select distinct 'table. 열 '에서'% < % /> % '유니온과 같은 열

결과 집합을 잘라내어 마지막 유니온을 잘라내어 SQL 문으로 결과 집합을 실행합니다. XML-ish로 보이는 하나 이상의 행이있는 열의 테이블 이름과 열 이름을 다시 가져옵니다.

편집 : 이것은 메모리에서 온 것입니다. systypes 및 유형 이름에 대한 조인이 잘못되었을 수 있으므로 systypes에서 선택하고 확인하십시오.

+1

좋은 술탄. 발언 몇 : '||'대신 '+'가 필요합니다. SQL에서. 또한 조인은 'from sys.tables'를 읽어야합니다. sys.columns join (t.object_id = c.object_id) ' – edosoft

+0

SQL-92를 준수해야하는 경우 systable 또는 sys.tables 카탈로그 대신 INFORMATION_SCHEMA를 사용하십시오 뷰 (SQL Server에만 해당) –

관련 문제