I'm not sure what you mean by dynamic , but if you mean that you are actually creating your queries at runtime, then you can get all available column names of all columns (which can be nullified or not) for this table in this database, you can simply compose them for the desired query.
In MySQL you can do it like this :
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '<TABLE_NAME>' AND IS_NULLABLE = 'YES' AND TABLE_SCHEMA='<DB_NAME>';
In SQL Server, you can do it like this
(if you have already selected the correct database) ( link table , columns )
SELECT Cols.name FROM sys.all_columns AS Cols INNER JOIN sys.tables AS Tabs ON Cols.object_id = Tabs.object_id WHERE Tabs.name = '<TABLE_NAME>' AND Cols.is_nullable = 1;
And in Oracle you can do it like this :
(already selecting the appropriate database)
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = '<TABLE_NAME>' AND NULLABLE = 'Y';
Not sure if this is a general Oracle thing (since I work mainly with SQL server), but when I tried this with a violin, the name of the table that I had to indicate was always in capital letters.
source share