各数据库拼接查询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之后,又新增了一批内置的聚合函数
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
- for xml path : 在SQL SERVER中我们有很多方法读取XML字段中的片段,反过来SQL SERVER也允许我们将表数据以XML方式显示,for xml path便是以xml显示的一种方式。
select ';'+name from Student for xml path('')
这段代码就是告诉数据库服务器要将生成的XML中name值以“;”方式进行拼接。 - STUFF(string,insert position,delete count,string inserted)函数是将一个字符串插入到另一个字符串中。插入时,插入的字符串可能删除指定数量的字符。