2013-07-22 46 views
-3

一個其中*像命令下不起作用:是否有SQL

DECLARE @jake varchar(30); 
SET @jake='$%$^$%' 

SELECT [PlayerID], [Nickname], [UserName], [ClubNumber], 
     [FirstName], [Email], [LastName], [DOB] 
FROM [Players] 
WHERE ***** LIKE'%'[email protected]+'%' 
ORDER BY lastname ASC 

我試圖使用*對所有列,所以我不必一一列舉出使用或命令。有任何想法嗎?

+2

這是我設想的T-SQL嗎?沒有直接的方法來做到這一點。您將不得不查詢information_schema數據庫以獲取列,然後構建一個要執行的動態SQL查詢。我會建議反對它,只是明確你在查詢中使用的列。 –

+0

如果您使用的是MS SQL Server,那麼在SQL Server Management Studio中,您可以右鍵單擊對象資源管理器中的表格,然後選擇'Script table as' - >'Select to' - >新窗口或剪貼板。你需要大量的輸入,但是你應該關注你所使用的列。即使你打算編寫動態邏輯來改變返回的列,你應該使用不同的'Views'來代替你想要的爲了簡單起見,需要返回不同列的列表。 – Pricey

回答

2

列名沒有通配符,至少不是傳統意義上的通配符。

5

沒有。你必須拼出你要比較的領域,雖然你可以像

WHERE CONCAT(field1, field2, field3, ....) LIKE '%...%' 

既然你做一個真正的whilecard像%...%,這將工作。如果你正在做其他類型(LIKE '...%'LIKE '%...'),這將不起作用。

+1

假設他使用SQL Server ** 2012 **或更新版本 - 早期版本沒有'CONCAT' –