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 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类似的事情:
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
它只返回我想要的记录的空白行。谁能帮忙?
**查询你进行什么**实际? – zerkms
@zerkms我想通过使用所描述的方法来创建我想要做的查询,如果这是有道理的。因此,首先使用SELECT DB FROM DB获取数据库名称,然后该查询的结果将是另一个我将单独运行的查询。 – Alias
它工作在相反的方向:首先您撰写与静态值工作查询,**只有经过**你试图建立在运行时 – zerkms