各数据库拼接查询sql语句

一、Oracle

查询需要的拼接的字段,再利用列转行函数 wm_concat()

SELECT
	\'select\' || \' \' || wm_concat (A . column_name) || \' \' || \'from\' || \' \' || \'表名\'
FROM
	(
		SELECT
			column_name
		FROM
			user_tab_columns
		WHERE
			table_name = \'表名\'
	) A

二、mysql

查询需要的拼接的字段,再利用列转行函数 GROUP_CONCAT()

SELECT
	concat(
		\'select \',
		substring(
			GROUP_CONCAT(COLUMN_NAME),
			1,
			LENGTH(
				GROUP_CONCAT(COLUMN_NAME, \',\')
			)
		),
		\' from \',
		\' 表名 \'	
		)
FROM
	information_schema. COLUMNS
WHERE
	table_name = \'表名\'
AND table_schema = \'表所在数据库名\'

三、postgresql

自从postgres 9之后,又新增了一批内置的聚合函数
在这里插入图片描述

SELECT
	\'select \' || string_agg (COLUMN_NAME, \',\') || \'  from 表名\' AS string
FROM
	information_schema. COLUMNS
WHERE
	table_schema = \'数据库名\'
AND TABLE_NAME = \'表名\';

四、sqlserver

SELECT
	\'select \' + stuff (
		(
			SELECT
				\',\' + COLUMN_NAME
			FROM
				information_schema.COLUMNS
			WHERE
				table_name = \'db_forbidword\' FOR xml path (\'\')
		),
		1,
		1,
		\'\'
	) + \' from db_forbidword\' AS string
  1. for xml path : 在SQL SERVER中我们有很多方法读取XML字段中的片段,反过来SQL SERVER也允许我们将表数据以XML方式显示,for xml path便是以xml显示的一种方式。  
    select \';\'+name from Student for xml path(\'\')
    这段代码就是告诉数据库服务器要将生成的XML中name值以“;”方式进行拼接。
  2. STUFF(string,insert position,delete count,string inserted)函数是将一个字符串插入到另一个字符串中。插入时,插入的字符串可能删除指定数量的字符。
版权声明:本文为匿名原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: