2013-06-21 400 views
0

我wondeing如果有類似的標題說:選擇的情況下*當

SELECT CASE * WHEN NULL THEN '' ELSE * END 

我想要做的情況下調理幾百列所以這將是方便的,如果我可以擁有它SELECT *語句。如果在SQL Server或MySQL的Ms中有類似的東西,有人能給我建議嗎?由於

+2

你不應該,一般使用'SELECT *'反正 - 你應該命名要檢索的列。如果某些列檢索起來昂貴,或者索引包含查詢中提到的所有列,這可以顯着提高性能。 –

+1

另外,SQL Server中沒有這樣的功能,但是爲了減少代碼,您可能需要查看['COALESCE'](http://msdn.microsoft.com/zh-cn/library/ms190349.aspx )。 –

+0

@Damien_The_Unbeliever感謝您的評論,我相信這是真的,我不應該使用*來提高性能。但是我更關心計算機的計算速度,而不是在查詢中輸入一百個列名。並感謝提示。那可能是我之後的那個。 –

回答

1

嘗試使用動態SQL(的MySql

SELECT GROUP_CONCAT(CONCAT('COALESCE(`', column_name, '`,'''') `', column_name, '`')) 
    INTO @sql 
    FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'Table1'; 

SET @sql = CONCAT('SELECT ', @sql, ' FROM Table1'); 
PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
+0

對於遲到接受抱歉,但我解決了與您的答案非常相似的問題。謝謝 –

+0

@ Chris'o不用擔心。你非常歡迎。祝你好運 :) – peterm

相關問題