2012-10-18 4 views
0

데이터베이스에서 얻은 특정 값과 문자열을 출력하려고합니다. 예를 들어, Microsoft Server 2008의 다음은 내가 그것을 원하는 방식으로 실행 : 반환쿼리와 문자열을 섞음 MySQL

SELECT 
'SELECT c.name COLLATE SQL_Latin1_General_CP1_CI_AS colName, o.name COLLATE SQL_Latin1_General_CP1_CI_AS tableName, ''' 
+ NAME + ''' db FROM ' + NAME 
+ '.sys.all_columns as c INNER JOIN ' + NAME 
+ 
'.sys.all_objects o ON c.object_id = o.object_id WHERE c.name like ''%password%'' AND type = ''U'' UNION' 
    FROM SYS.DATABASES 

을 다음

SELECT 
'SELECT c.name COLLATE SQL_Latin1_General_CP1_CI_AS colName, o.name COLLATE SQL_Latin1_General_CP1_CI_AS tableName, ''' 
+ DB + ''' db FROM ' + DB 
+ '.sys.all_columns as c INNER JOIN ' + DB 
+ 
'.sys.all_objects o ON c.object_id = o.object_id WHERE c.name like ''%password%'' AND type = ''U'' UNION' 
    FROM DB 
:

SELECT c.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS colName, 
     o.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS tableName, 
     'master'         db 
    FROM MASTER.SYS.ALL_COLUMNS AS c 
     INNER JOIN MASTER.SYS.ALL_OBJECTS o 
       ON c.OBJECT_ID = o.OBJECT_ID 
WHERE c.NAME LIKE '%password%' 
     AND TYPE = 'U' 
UNION 
SELECT c.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS colName, 
     o.NAME COLLATE SQL_LATIN1_GENERAL_CP1_CI_AS tableName, 
     'tempdb'         db 
    FROM TEMPDB.SYS.ALL_COLUMNS AS c 
     INNER JOIN TEMPDB.SYS.ALL_OBJECTS o 
       ON c.OBJECT_ID = o.OBJECT_ID 
WHERE c.NAME LIKE '%password%' 
     AND TYPE = 'U' 
UNION 

을하지만 MySQL은 비슷한 일을하려고 할 때

원하는 레코드의 빈 줄만 반환합니다. 누구든지 도와 줄 수 있습니까? MySQL의에서

+1

** 쿼리는 실제 ** 무엇을 수행합니까? – zerkms

+0

@zerkms 필자가 설명하는 방법을 사용하여 원하는 쿼리를 만들고 싶습니다. 먼저 SELECT DB FROM DB를 사용하여 DB 이름을 얻습니다. 그러면 해당 쿼리의 결과가 별도로 실행되는 다른 쿼리가됩니다. – Alias

+0

그것은 반대의 방식으로 작동합니다 : 처음에 정적 값으로 작동하는 쿼리를 작성하고 ** 그 후에 런타임에서 비슷한 것을 작성하려고 시도한 후에 – zerkms

답변

1

는 대신 + 연산자에 concat 기능이 필요합니다

SELECT concat(
'SELECT c.name COLLATE SQL_Latin1_General_CP1_CI_AS colName, o.name COLLATE SQL_Latin1_General_CP1_CI_AS tableName, ''' 
, DB , ''' db FROM ' , DB 
, '.sys.all_columns as c INNER JOIN ' , DB 
, 
'.sys.all_objects o ON c.object_id = o.object_id WHERE c.name like ''%password%'' AND type = ''U'' UNION' 
) FROM DB 
관련 문제