通常我們使用列來篩選SQL語句是否有可能使用WHERE位置選擇sqlserver數據?
SELECT col_id, col_name FROM dataTable WHERE col__id>5
使用位置責令其是可能的:ORDER BY 1 DESC
是否有可能使用過濾的位置?像「這個」:在SELECT
列表之前
SELECT col_id, col_name FROM dataTable WHERE #2 LIKE '%Peter%'
通常我們使用列來篩選SQL語句是否有可能使用WHERE位置選擇sqlserver數據?
SELECT col_id, col_name FROM dataTable WHERE col__id>5
使用位置責令其是可能的:ORDER BY 1 DESC
是否有可能使用過濾的位置?像「這個」:在SELECT
列表之前
SELECT col_id, col_name FROM dataTable WHERE #2 LIKE '%Peter%'
號的WHERE
子句(邏輯)評估,因此無法通過數字指SELECT
列表項,因爲它們還沒有被編號。
有可能做爲所選定列的列表中進行評估後,評估做在ORDER BY
,這樣你就可以通過數字引用列(儘管這not recommended)或別名。
此外,即使可能,它也會讓你的SQL更加脆弱和難以閱讀。
DECLARE @i TINYINT = 2
SELECT col_id, [col_name]
FROM dataTable
WHERE
CASE @i
WHEN 1 THEN col_id
WHEN 2 THEN [col_name]
END LIKE '%Peter%'
where子句在'select'子句之前不運行*。它首先被邏輯處理。 –
即使是使用了'爲了by'已棄用的位置;它不再是ANSI標準。 –
我不知道!謝謝 – Andynedine