各数据库拼接查询sql语句

各数据库拼接查询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之后,又新增了一批内置的聚合函数
各数据库拼接查询sql语句

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)函数是将一个字符串插入到另一个字符串中。插入时,插入的字符串可能删除指定数量的字符。