日期:2014-05-17  浏览次数:20469 次

MSSQL不支持别名查询还是我写错了?
我用这个查询,不报错,但也查不出值。
SELECT   RID AS 编号
FROM      Records
WHERE   ('编号' LIKE '%7%')


一定要用这个才能查到值
SELECT   RID AS 编号
FROM      Records
WHERE   (RID LIKE '%7%')


求解,需要用到别名!!!
------最佳解决方案--------------------
非要用别名的话可以用这种格式:
;with huang as (SELECT   RID AS 编号
 FROM      Records)
SELECT  编号
 FROM      huang
 WHERE   ('编号' LIKE '%7%')
------其他解决方案--------------------
因为sql 的顺序规定先where再select,你的编号在where才定义所以你不能这样写
------其他解决方案--------------------
WHERE   ('编号' LIKE '%7%') 
WHERE (1=2)
有什么区别
------其他解决方案--------------------
这个情况,是不支持别名查找
------其他解决方案--------------------

--这个是判断7是否在‘编号’这个字符串中   注意  这里的编号是一个字符串  而不是别名  
SELECT   RID AS 编号
FROM      Records
WHERE   ('编号' LIKE '%7%')


--这个是筛选RID中含有7的
SELECT   RID AS 编号
FROM      Records
WHERE   (RID LIKE '%7%')


建议楼主看一下SQL语句执行的顺序


SQL Select语句完整的执行顺序: 

1、from子句组装来自不同数据源的数据; 
2、where子句基于指定的条件对记录行进行筛选; 
3、group by子句将数据划分为多个分组; 
4、使用聚集函数进行计算; 
5、使用having子句筛选分组; 
6、计算所有的表达式; 
7、使用order by对结果集进行排序。 


另外:一个查询语句各个部分的执行顺序: 
--8)  SELECT (9) DISTINCT (11) <TOP_specification> <select_list> 
--(1)  FROM <left_table> 
--(3)    <join_type> JOIN <right_table> 
--(2)      ON <join_condition> 
--(4)  WHERE <where_condition> 
--(5)  GROUP BY <group_by_list> 
--(6)  WITH {CUBE