Monday 15 February 2010

mysql - escape entire column if all of that column's fields are null (or zero) -


Is there no way to bring a column in mysql query if all this field is tap (or zero)? Or any way to remove such columns from the result of the query? For example, I have different tables and can be any:

  ____________________________________________ | ID | Value1 Value 2 Value 3 Value4 | -------------------------------------------- | 1 | 3 | 0 | A. Faucet | 2 | 5 | 0 | B Faucet | 3 | 0 | 0 | C. Faucet | 4 | 9 | 0 | D | Faucet | 5 | 7 | 0 | Faucet Faucet | 6 | 9 | 0 | E Faucet --------------------------------------------   

I want something like this in the end:

  __________________________ | ID | Value1 Value 3 -------------------------- | 1 | 3 | A. | 2 | 5 | B | 3 | 0 | C. | 4 | 9 | D | | 5 | 7 | Faucet | 6 | 9 | E --------------------------   

Thank you.

Technically you can do this with dynamic SQL, but you can move forward with this approach It will be very suspicious.

  DELIMITER $$ creation process sp_select_not_empty (IN tbl_name VARCHAR (64)) BEGIN SET @sql = NULL, @cols = NULL; SELECT GROUP_CONCAT (CONCAT ('SELECT'), column_name, '' 'name, COUNT (NULLIF (', column_name, ',' 'in case when the data-type IN (' int ',' decimal ') then 0 when the data Type 'Varchar', 'char' THEN '' '' '' END, ')) FROM', tbl_name) SEPARATOR 'Union All' INTO @sql INFORMATION_SCHEMA.COLUMNS WHERE table_name = tbl_name; SET @sql = CONCAT (Select 'GROUP_CONCAT (name)' @ cols FROM (', @sql,' q where q.n & gt; 0 '); Prepare SSML with SSMT; EXTUTE STMT; SET @sql = CONCAT ('SELECT', @cols, 'FROM', @tbl); Prepare SSML with SSMT; EXTUTE STMT; DEALLOCATE STMT; END $$ DELIMITER;   

is now calling our process

  call sp_select_not_empty ('Table1');   

and we get it

 + ------ + -------- + -------- + | ID | Value1 Value 3 + ------ + -------- + -------- + | 1 | 3 | A. | 2 | 5 | B | 3 | 0 | C. | 4 | 9 | D | | 5 | 7 | Faucet | 6 | 9 | E + ------ + -------- + -------- +   

No comments:

Post a Comment