select '[' + TABLE_NAME + ']' from information_schema.tables where TABLE_NAME like '%강원도'
이렇게 검색하면 내가 가지고있는 테이블 이름중에 강원도 라는 단어가 들어가 있으면
그 값을 검색을 해주겠죠 이걸 실행하면
[20140207_강원도] <--이 값 하나만 검색되는데요
이것을 from 들어갈 자리에
SELECT
substring([열 0],1,3) + '-' + substring([열 0],4,3) as ef1
,ISNULL([열 2],'') + ' ' + ISNULL([열 4],'') + ' ' + ISNULL([열 6],'') + ' ' + ISNULL([열 9],' ') + ' '+[열 12] + REPLACE('-'+[열 13],'-0',' ') as ef2
,ISNULL([열 2],'') + ' ' + ISNULL([열 4],'') + ' ' + ISNULL([열 6],'') + ' ' + ISNULL([열 9],' ') + ' '+[열 12] + REPLACE('-'+[열 13],'-0',' ') as ef3
,ISNULL([열 18],'') as ef4
FROM [20140207_강원도] <-- 이자리에넣는 방법 없을까요...
직접 적어서 검색하는 방법이 아닌
맨 위에 있는 셀렉트문을 검색하여 나온값을 from 쪽에 변수같이 넣고싶어요 ㅜㅜ
declare @gangwondo varchar(255)
set @gangwondo =( select '[' + TABLE_NAME + ']' from information_schema.tables where TABLE_NAME like '%강원도')
이런식으로 저장해서 from 옆에 @ganwondo 해버리니까 안되고...뭔가 방법이 없을까요
부탁드립니다 ㅜㅜ
Comment 4
-
항해자™
2014.03.24 18:45
SELECT @vTblName = TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE TABLE_NAME LIKE '%강원도'SET @vSQL = 'SELECT SUBSTRING([열0],1,3) +'-'+ SUBSTRING([열0],4,3) as ef1, ISNULL([열2],'') +' '+ ISNULL([열4],'') +' '+ ISNULL([열6],'') +' '+ ISNULL([열9],' ') +' '+[열12] + REPLACE('-'+[열13],'-0',' ') as ef2, ISNULL([열2],'') +' '+ ISNULL([열4],'') +' '+ ISNULL([열6],'') +' '+ ISNULL([열9],' ') +' '+[열12] + REPLACE('-'+[열13],'-0',' ') as ef3, ISNULL([열18],'') as ef4FROM '+ @vTblNameEXEC (@vSQL) -
옹달
2014.03.25 10:04
힌트주셔서 열심히 고쳐봤습니다.
declare @vTblName VARCHAR(255)
declare @vSQL VARCHAR(255)
SELECT @vTblName ='[' + TABLE_NAME + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%강원도'
set @vSQL = '
SELECT
substring([열 0],1,3) + ''-'' + substring([열 0],4,3) as ef1
,ISNULL([열 2],'''') + '' '' + ISNULL([열 4],'''') + '' '' + ISNULL([열 6],'''') + '' '' + ISNULL([열 9],'' '') + '' ''+ [열 12] + REPLACE(''-''+[열 13],''-0'','' '') as ef2
,ISNULL([열 2],'''') + '' '' + ISNULL([열 4],'''') + '' '' + ISNULL([열 6],'''') + '' '' + ISNULL([열 9],'' '') + '' ''+[열 12] + REPLACE(''-''+[열 13],''-0'','' '') as ef3
,ISNULL([열 18],'''') as ef4
from ' + @vTblNameEXEC (@vSQL)
이렇게 해서 실행해보니
메시지 207, 수준 16, 상태 1, 줄 4
열 이름 '열 0'이(가) 잘못되었습니다.
메시지 207, 수준 16, 상태 1, 줄 4
열 이름 '열 0'이(가) 잘못되었습니다.
메시지 207, 수준 16, 상태 1, 줄 5
열 이름 '열 2'이(가) 잘못되었습니다.
메시지 207, 수준 16, 상태 1, 줄 5
열 이름 '열 4'이(가) 잘못되었습니다.
메시지 207, 수준 16, 상태 1, 줄 5
열 이름 '열 6'이(가) 잘못되었습니다.
메시지 207, 수준 16, 상태 1, 줄 5
열 이름 '열 9'이(가) 잘못되었습니다.
메시지 207, 수준 16, 상태 1, 줄 5
열 이름 '열 12'이(가) 잘못되었습니다.
메시지 207, 수준 16, 상태 1, 줄 5
열 이름 '열 13'이(가) 잘못되었습니다.이렇게 오류가 나오는군요...
@vTblName를셀렉트 하기전에 실행해보니 '20140207_강원도'이(가) 테이블 개체이므로 프로시저 '20140207_강원도'을(를) 요청하지 못했습니다.라는 오류가 잡히는데 이 문제떄문에 열을 못찾는건가요?어떻게 고쳐야할지... ㅜㅜ
-
처리짱
2014.03.25 14:30
구문에 오류가 있는듯요
print (@vSQL 해서 쿼리를 보세요..
-
옹달
2014.03.25 15:43
declare @vSQL VARCHAR(255) 자릿수가 부족해서 나는 오류였네요..
이제 넉넉하게 잡고 해야 ;;