比如:
select getName(id) as name from test
Where name like '%张%'但是这样报错,说找不到name这一列

解决方案 »

  1.   

    -- 加一层子查询就可以
    select * from (select getName(id) as name from test)
    Where name like '%张%'
      

  2.   

    select getName(id) as name from test
    Where name like '%张%' 
    别名不能这样用select getName(id) as name from test
    Where getName(id) like '%张%'或者 select *
    from (select getName(id) as name from test)
    Where name like '%张%'
      

  3.   

    --应该这样写:
    select getName(id) as sName from test --name是保留字,最好换个名字吧
    Where getName(id) like '%张%'
    order by sName --order by 后面可以直接用别名
    ;
      

  4.   

    name 是你指定的 getName(id) 的别名,并不是 test 表中实际的字段
    所以在 where 条件中直接使用 name 会说找不到 name 这一列,你直接使用 getName(id) like 就可以
    而在 order by 中,是对内存中的结果集进行排序,内存中,getName(id) 已经被你指定了 name 别名,所以排序的时候是可以指定别名
      

  5.   


    别名在where中不能使用,先看看别名(Alias)的帮助。
      

  6.   


    或者说你要先了解SQL的运行机制(执行的顺序)
      

  7.   

    select getName(id) as name from test
    Where getName(id) like '%张%'