举个例子:select * from table order by ‘字段名’desc
请注意:这个字段名的外围加了引号,排序失效,大家可以试一下
想知道这个语句是怎么被 解析器解析的?这个带了引号的字段被解析成了什么?
order by 你的字段名 ,你加了‘’ 这个时候能在表中找到你加‘’的字段名吗
说的对,但是他为什么不报“找不到xx字段”的错。
所以,我的疑惑是:它解析的原理 或者 他是解析成了什么才没有报错
@竜咚咚: 兄弟,你这个发现我都要哭了。
我没说过报错,我说的是排序失效
@竜咚咚: 兄弟,你该不会是 asc 吧,你用 desc 试试。
@扬撒: 我就是用的desc
@竜咚咚: 贴下语句,麻烦了。
@扬撒: 就是这样
@扬撒: 没有说排序失效啊
@竜咚咚: 难道是客户端的问题,我用的navicat,你用的是?
@扬撒: sql server management studio
加了引号不就是字符串了吗,order by 字段你写了个字符串肯定没用
order by 字段
你加引号就是字符串了, sql执行的时候排序不把这个字符串当作表的字段处理, 自然就无效了,
举个例子:select * from table order by ‘字段名’desc(排序失效)
和
select * from table order by 不存在的字段名 desc(会报错)
我想知道的是,为什么加了引号不报错,而仅仅是失效
你可以在要排序的字段后面写上一个+0 看看行不
加引号就变成字符串,相当于常量列了,效果如下:
SELECT TOP 1000 [Cid], [Cname], 'cid' TMP FROM [CommissionInfo] ORDER BY TMP desc