我wondeing如果有類似的標題說:選擇的情況下*當
SELECT CASE * WHEN NULL THEN '' ELSE * END
我想要做的情況下調理幾百列所以這將是方便的,如果我可以擁有它SELECT *語句。如果在SQL Server或MySQL的Ms中有類似的東西,有人能給我建議嗎?由於
我wondeing如果有類似的標題說:選擇的情況下*當
SELECT CASE * WHEN NULL THEN '' ELSE * END
我想要做的情況下調理幾百列所以這將是方便的,如果我可以擁有它SELECT *語句。如果在SQL Server或MySQL的Ms中有類似的東西,有人能給我建議嗎?由於
嘗試使用動態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;
對於遲到接受抱歉,但我解決了與您的答案非常相似的問題。謝謝 –
@ Chris'o不用擔心。你非常歡迎。祝你好運 :) – peterm
你不應該,一般使用'SELECT *'反正 - 你應該命名要檢索的列。如果某些列檢索起來昂貴,或者索引包含查詢中提到的所有列,這可以顯着提高性能。 –
另外,SQL Server中沒有這樣的功能,但是爲了減少代碼,您可能需要查看['COALESCE'](http://msdn.microsoft.com/zh-cn/library/ms190349.aspx )。 –
@Damien_The_Unbeliever感謝您的評論,我相信這是真的,我不應該使用*來提高性能。但是我更關心計算機的計算速度,而不是在查詢中輸入一百個列名。並感謝提示。那可能是我之後的那個。 –