易截截图软件、单文件、免安装、纯绿色、仅160KB

高分求解SQL语句 - MS-SQL Server / 疑难问题

对于数据库中的两条数据
1-5.1
1-5.10
1-5.9
如何实现查旬结果按照从小到大的排序
1-5.1
1-5.9
1-5.10






SQL code:
if not object_id('tb') is null
drop table tb
Go
Create table tb([col] varchar(10))
Insert tb
select '1-5.1' union all
select '1-5.10' union all
select '1-5.9'
Go
select *
from tb
order by left(col,charindex('.',col)-1)
,cast(right(col,len(col)-charindex('.',col))as float)asc
/*
col
----------
1-5.1
1-5.9
1-5.10
*/


SQL code:
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([col] varchar(10))
INSERT INTO [tb]
SELECT '1-5.1' UNION ALL
SELECT '1-5.10' UNION ALL
SELECT '1-5.9' UNION ALL
SELECT '1-3.9' UNION ALL
SELECT '1-3.12' UNION ALL
SELECT '1-3.3'

--SELECT * from [tb]

-->SQL查询如下:
select * from tb order by left(col,charindex('.',[col])),stuff(col,1,charindex('.',[col]),'')*1
/*
col
----------
1-3.3
1-3.9
1-3.12
1-5.1
1-5.9
1-5.10

(6 行受影响)
*/


select * from tb
order by cast(replace(col,'-','0') as decimal)

SQL code:


相关问答:

Asp+sql server问题 - Web 开发 / ASP

我一个项目,有个插入操作,具体是这样的:
我有进货信息表。在出货时选择相应的进货信息,输入数量,选择部门后,点保存按钮,由于网络延时,点一下没有反映,于是用户就又点一下,导致一次插入了两条记录:
例: ......

sql小小的疑问 - .NET技术 / C#

可能因为工作的原因 接触数据库这块比较少,之前都是做程序这块,数据库这块都有专门的人来做 分工都很明细 所以对数据库这一块完全不了解。前段时间 去面试了几家公司 几乎都是在数据库这块挂掉的 连个简单的SQ ......

请教SQL语句查询问题? - MS-SQL Server / 基础类

我想查询出每天数据的最大的一个值。表的格式如下
表名: hisdata
字段 编号 值 状态 时间  
  Id value state dattime  
  101 32.3 0 ......

sql 问题 - MS-SQL Server / 基础类

需求如下:
学院 academy(aid,aname)
班级 class(cid,cname,aid)
学生 stu(sid,sname,aid,cid)
住宿区 region(rid,rname)
宿舍楼 build(bid,rid,bnote) bnote是‘男’/‘女’
宿舍 dorm(did,rid,bid,bedn ......

求一条SQL语句 - MS-SQL Server / 应用实例

原SQL语句SQL code:

SELECT t6.FName '操作工',t1.FDate '日期',t5.FName '制单人',t3.FName '设备',t4.FName '班制',
t7.FBillNo '工艺指令单号',t8.FName '岗位',t2. ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号