select top 1 from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc 改为 select top 1 * from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc 后四个句子我执行都正常啊.
select top 1 recordcode from T_recordCode where recordtype=1 order by convert(numeric,recordcode) desc select * from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc 但是我这样执行没问题啊。这是为什么啊?
select top 1 recordcode from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc 这句你也成功执行了啊?
没有啊,像 select top 1 recordcode from T_recordCode where recordtype=1 order by convert(numeric,recordcode) desc 这样就可以成功执行了啊。 recordtype=1没有加单引号的方式。而加了单引号后却报错了。 加*号当然可以执行成功了,但我问的不是这个,是执行不成功的语句,为什么会不成功呢?两条语句就差一个单引号,这会有什么区别吗?
加单引号结果上没什么区别,系统会隐式转换的,就像datetime类型与字符串型的日期比较一样.
跟安装SQL时设置的默认排序有关系.
declare @t table(RecordType char(1) COLLATE Chinese_PRC_CI_AS NULL) insert @t select 1 union all select 2select * from @t where RecordType=1 /* RecordType ---------- 1(1 行受影响) */ select * from @t where RecordType='1' /* RecordType ---------- 1(1 行受影响) */在我的环境测试都可以.
改为
select top 1 * from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc
后四个句子我执行都正常啊.
select * from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc
但是我这样执行没问题啊。这是为什么啊?
这句你也成功执行了啊?
你是不是recordcode里面含有不能专程数值型的字符?
select top 1 recordcode from T_recordCode where recordtype=1 order by convert(numeric,recordcode) desc
这样就可以成功执行了啊。 recordtype=1没有加单引号的方式。而加了单引号后却报错了。
加*号当然可以执行成功了,但我问的不是这个,是执行不成功的语句,为什么会不成功呢?两条语句就差一个单引号,这会有什么区别吗?
跟安装SQL时设置的默认排序有关系.
insert @t select 1
union all select 2select * from @t where RecordType=1
/*
RecordType
----------
1(1 行受影响)
*/
select * from @t where RecordType='1'
/*
RecordType
----------
1(1 行受影响)
*/在我的环境测试都可以.