Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selecting all columns that start with XXX using a wildcard?

I have several columns in my databases with similar names. How do I select those based on the word they start with? Here's an example table layout: enter image description here

I tried selecting all info for a particular thing (food kind in this example) using

$Food = "Vegetable";  mysql_query("SELECT `" . $Food . " %` FROM `Foods`"); 

but it didn't seem to work.

Any help would be appreciated :-)

EDIT: Apparently this wasn't clear from my example, but I already know all column's first words. The columns are always the same and no 'food kinds' are ever added or deleted. The PHP variable is only there to determine which one of a couple of set kinds I need.

like image 259
Chris Avatar asked Jan 25 '11 19:01

Chris


People also ask

What is the wildcard character that selects all columns from a table?

* is the wildcard character used to select all available columns in a table. When used as a substitute for explicit column names, it returns all columns in all tables that a query is selecting FROM .

What is * called in select?

The SELECT clause specifies a list of properties (columns) by name, or the wildcard character (“*”) to mean “all properties”.

What is the difference between select * and select column name?

The reason I use SELECT COLUMN_NAMES is when using Stored Procedure, adding columns to the table will not screw your application. select * will give additional column (which you've just added to the table) and application will get additional column and may raise error.


2 Answers

You'd have to build the SQL dynamically. As a starting point, this would get you the column names you're seeking.

SELECT COLUMN_NAME     FROM INFORMATION_SCHEMA.COLUMNS     WHERE table_name = 'Foods'         AND table_schema = 'YourDB'         AND column_name LIKE 'Vegetable%' 
like image 91
Joe Stefanelli Avatar answered Oct 13 '22 22:10

Joe Stefanelli


There's no way to do exactly what you're trying to. You could do another query first to fetch all the column names, then process them in PHP and build the second query, but that's probably more complex than just writing out the names that you want.

Or is there a reason this query needs to be dynamic? Will the table's structure change often?

like image 39
Chad Birch Avatar answered Oct 13 '22 22:10

Chad Birch