mysql - 将字符串与查询 MySQL 混合

标签 mysql sql join

我正在尝试输出一个字符串加上我从数据库获得的某些值。例如,在 Microsoft Server 2008 中,以下代码按我希望的方式运行:

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 

它只返回我想要的记录的空行。有人可以帮忙吗?

最佳答案

在 MySQL 中,您需要使用 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 

关于mysql - 将字符串与查询 MySQL 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953034/

相关文章:

mysql - phpmyadmin 和外键

mysql - 选择并统计过去 30 天的所有订单

mysql - 我的关节乘以我的总和结果

mysql - 应该使用 SQL Union 还是 Join?

sql - 获取最近周五日期的SQL

MySQL 检查结果是否被收藏

php - 单击编辑时如何保留数据库驱动的下拉列表框的值?

mysql - 使用 Eclipse 通过 JSP 连接到 MySQL

sql - 有没有工具可以可视化复杂的 SQL 连接?

sql - 需要按期间(年,月)获取不同的累计计数