J'ai besoin d'interroger la base de données pour obtenir les noms de colonnes , à ne pas confondre avec les données de la table. Par exemple, si j'ai une table nommée EVENT_LOG
qui contient eventID
, eventType
, eventDesc
et eventTime
, je voudrais récupérer les noms de champs de la requête et rien d' autre.
J'ai trouvé comment faire cela dans:
Mais j'ai besoin de savoir: comment cela peut-il être fait dans Oracle ?
USER_TAB_COLUMNS
àall_tab_columns
. Pour être sûr à 100% du résultat, vous pourriez le propriétaire épicé.Dans SQL Server ...
SELECT [name] AS [Column Name] FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE type = 'V' AND [Name] = 'Your table name')
Type = 'V' pour les vues Type = 'U' pour les tables
la source
Tu peux le faire:
describe EVENT_LOG
ou
Remarque: applicable uniquement si vous connaissez le nom de la table et spécifiquement pour Oracle.
la source
Pour SQL Server 2008, nous pouvons utiliser information_schema.columns pour obtenir des informations de colonne
SELECT * FROM information_schema.columns WHERE table_name = 'Table_Name' ORDER BY ordinal_position
la source
INFORMATION_SCHEMA
tables sont les tables de métadonnées standard ANSI. Tout bon SGBDR moderne les aura.Pour SQLite, je pense que vous pouvez utiliser quelque chose comme ce qui suit:
PRAGMA table_info(table-name);
Explication de sqlite.org:
Ce pragma renvoie une ligne pour chaque colonne de la table nommée. Les colonnes de l'ensemble de résultats incluent le nom de la colonne, le type de données, si la colonne peut être NULL ou non et la valeur par défaut de la colonne. La colonne "pk" du jeu de résultats est égale à zéro pour les colonnes qui ne font pas partie de la clé primaire et est l'index de la colonne dans la clé primaire pour les colonnes qui font partie de la clé primaire.
Voir aussi: Sqlite.org Pragma Table Info
la source
Ces informations sont stockées dans la
ALL_TAB_COLUMNS
table système:SQL> select column_name from all_tab_columns where table_name = 'DUAL'; DUMMY
Ou vous pouvez
DESCRIBE
utiliser la table si vous utilisez SQL * PLUS:SQL> desc dual Name Null? Type ----------------------------------------------------- -------- ---------------------- ------------- DUMMY VARCHAR2(1)
la source
ALL_TAB_COLUMNS
via la référence officielle de la base de données Oracle . Cette vue décrit les colonnes des tables, vues et clusters accessibles à l'utilisateur actuel.select column_name from all_tab_columns where table_name = 'dbo.usertbl';
Les autres réponses répondent suffisamment à la question, mais j'ai pensé partager des informations supplémentaires. D'autres décrivent la syntaxe "DESCRIBE table" afin d'obtenir les informations de la table. Si vous souhaitez obtenir les informations dans le même format, mais sans utiliser DESCRIBE, vous pouvez faire:
SELECT column_name as COLUMN_NAME, nullable || ' ' as BE_NULL, SUBSTR(data_type || '(' || data_length || ')', 0, 10) as TYPE FROM all_tab_columns WHERE table_name = 'TABLENAME';
Cela n'a probablement pas beaucoup d'importance, mais je l'ai écrit plus tôt et cela semble convenir.
la source
Incorrect Syntax near '|'
erreurPour Oracle
SELECT column_name FROM user_tab_cols WHERE table_name=UPPER('tableName');
la source
describe YOUR_TABLE;
Dans ton cas :
describe EVENT_LOG;
la source
select column_name,* from information_schema.columns where table_name = 'YourTableName' order by ordinal_position
la source
Pour MySQL, utilisez
SELECT column_name FROM information_schema.columns WHERE table_schema = 'Schema' AND table_name = 'Table_Name'
la source
Même c'est aussi l'une des façons dont nous pouvons l'utiliser
select * from product where 1 != 1
la source
Pour SQL Server:
SELECT [name] AS [Column Name] FROM syscolumns WHERE id = object_id('TABLE_NAME')
la source
SELECT COLUMN_NAME 'all_columns' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='user';
la source
Vous pouvez également essayer ceci, mais cela peut contenir plus d'informations que ce dont vous avez besoin:
la source
Mysql
SHOW COLUMNS FROM a_table_named_users WHERE Field REGEXP 'user_id|user_name|user_pass'
Cela renverra un résultat comme ceci:
Ensuite, pour extraire les valeurs, vous pouvez simplement
Ceci est également idéal pour passer des entrées dynamiquement car le REGEXP a besoin du '|' pour plusieurs entrées, mais c'est aussi un moyen de séparer les données et de les stocker / transmettre facilement aux classes / fonctions.
Essayez également de jeter des données factices pour la sécurité lors de leur envoi et comparez ce qui a été renvoyé lors de la réception d'erreurs.
la source
Dans Oracle, deux vues décrivent les colonnes:
DBA_TAB_COLUMNS décrit les colonnes de toutes les tables, vues et clusters de la base de données.
USER_TAB_COLUMNS décrit les colonnes des tables, vues et
clusters appartenant à l'utilisateur actuel. Cette vue n'affiche pas la
colonne OWNER.
la source
La réponse est ici: http://php.net/manual/en/function.mysql-list-fields.php J'utiliserais le code suivant dans votre cas:
$result = mysql_query("SHOW COLUMNS FROM sometable"); if (!$result) { echo 'Could not run query: ' . mysql_error(); exit; } $fields = array(); if (mysql_num_rows($result) > 0) { while ($row = mysql_fetch_assoc($result)) { $fields[] = $row['Field']; } }
la source
SELECT A.COLUMN_NAME, A.* FROM all_tab_columns a WHERE table_name = 'Your Table Name' AND A.COLUMN_NAME = 'COLUMN NAME' AND a.owner = 'Schema'
la source
vous pouvez exécuter cette requête
SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name LIKE '%%' --if you want to find specific column write here ORDER BY schema_name, table_name;
la source
Sélectionnez simplement la première ligne du tableau, pour oracle:
select * from <table name> where rownum = 1;
la source
Je suis tombé sur cette question à la recherche d'un accès aux noms de colonnes sur Teradata, je vais donc ajouter la réponse pour leur `` saveur '' de SQL:
SELECT ColumnName FROM DBC.Columns WHERE DatabaseName='DBASE_NAME' AND TableName='TABLE_NAME';
Les informations sont stockées dans la base de données DBC.
Obtenir des types de données est un peu plus compliqué : obtenez le type de colonne à l'aide des tables système teradata
la source
Essaye ça
select * from sys.all_columns c join sys.objects o on c.object_id=o.object_id where o.name = 'TABLENAME' and c.name like '%COLUMN NAME%'
la source
Je l'ai fait comme ça
SELECT TOP 0 * FROM Posts
Cela fonctionne même dans http://data.stackexchange.com dont je ne connais pas les tables de service!
la source
SELECT COLUMN_NAME FROM YourDatabase.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'YourTableName'
la source