通常我们使用一列来过滤sql句子
SELECT col_id, col_name FROM dataTable WHERE col__id>5
可以使用ORDER的职位:ORDER BY 1 DESC
是否可以使用一个位置来过滤?像“这个”的东西:
SELECT col_id, col_name FROM dataTable WHERE #2 LIKE '%Peter%'
答案 0 :(得分:2)
没有。 WHERE
子句在SELECT
列表之前进行(逻辑)评估,因此它不能按编号引用SELECT
列表项,因为它们尚未编号。
可以在ORDER BY
中执行此操作,因为评估了所选列列表后评估的,因此您可以按编号引用列(虽然那是not recommended)或别名。
此外,即使有可能,它也会使您的SQL更脆弱,更难阅读。
答案 1 :(得分:1)
答案 2 :(得分:0)
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%'