各位大大不好意思~
想請問一下一個比較冷門的SQL
我最近在使用PostgreSQL的時候
使用了查詢的SQL語法:
SELECT * FROM public.test;
假設說 我這個test資料表裡面有 NAME NUMBER CLASS PHONE.....等資料
我如果想輸出全部的資料但都不顯示 "CLASS" 這個欄位
我該怎麼下語法好呢??
((我查了網路大家都是直接硬尻
SELECT NAME NUMBER PHONE..... FROM public.test;
但假如今天我的欄位很多 只想扣掉其中一個欄位 請問大大們該如何下語法??
create table ithelp171024 (
id int not null
, mclass char(1) not null
, phone char(10) not null
, col1 char(1) not null
, col2 char(1) not null
, col3 char(1) not null
, col4 char(1) not null
);
-- 假設不要 mclass, col3
-- 用SQL Command 產生 SQL Command
SELECT 'SELECT ' || string_agg(column_name, ',')
|| ' FROM'
|| ' ithelp171024;' as gen_sql
FROM information_schema.columns c
WHERE table_name = 'ithelp171024'
AND column_name NOT IN ('mclass', 'col3');
gen_sql
----------------------------------------------------
SELECT id,phone,col1,col2,col4 FROM ithelp171024;
(1 筆資料列)
時間: 3.000 ms
海綿寶寶那篇,排版是有問題的.另外現在新版的PostgreSQL 有 String_Agg()可以直接用.
所以我寫了個例子,給大家參考一下.
information_schema 是ANSI 定義的標準通用schema,大多數資料庫會作view來對應.
我們就可以利用. || 是 字串(String)連接運算元,PostgreSQL,Oracle都是使用這個.
若是MySQL 可以用 concat()函數來連接;
產生 columns 的使用 GROUP_CONCAT() 來串接.
MySQL的以前我有回答過,當然還是被不長進發問者
沒選最佳解答啦.
2008年就有人問過相同問題了
直到現在
答案還是在 2008 年那篇裡