如果一列是varchar型, 里面 中文+数字+中文...
order by 的时候由于数字作为字符处理,排序会出现1,10,11,...2,20,21...,3,
不知道如何解决,如:北京路25号,北京路2号,北京路2号群光百货1楼,北京路2号群光百货2楼,北京路2号群光百货10楼
自己写不出来
order by 的时候由于数字作为字符处理,排序会出现1,10,11,...2,20,21...,3,
不知道如何解决,如:北京路25号,北京路2号,北京路2号群光百货1楼,北京路2号群光百货2楼,北京路2号群光百货10楼
自己写不出来
解决方案 »
- LEFT OUTER LOOP JOIN 的LOOP是什么意思?
- An INSERT EXEC statement cannot be nested.问题
- 请问:SQL2000的事件探查器对应2005里的啥?
- [DBNETLIB]ConnectionRead(recv()) 一般性网络错误。请检查网络文档
- 如何导入Excel表中的部分行数据?
- 请教执行数据库查询函数问题?
- 怎样在一个存储过程中调用另外一个存储过程的变量!!!
- 如何给表添加IDENTITY
- 问一条sql语句
- 高分求购sql语句
- 多表查询问题?
- 请教如何用SQL语句定位字符串中的第一个汉字,并从该此汉字开始将字符串截成两个字符串。
@s varchar(300)
)
returns int
as
begin
if PATINDEX('%[0-9]%',@s)>0
return cast(left(stuff(@s,1,PATINDEX('%[0-9]%',@s)-1,''),PATINDEX('%[^0-9]%',stuff(@s,1,PATINDEX('%[0-9]%',@s)-1,''))-1) as int)
return 0
end
go你的可以
select * from 你的表名
order by dbo.fn_GetFirstNum(地址字段名)
order by left(地址字段名,PATINDEX('%[0-9]%',地址字段名)-1), --北京路
dbo.fn_GetFirstNum(地址字段名) -- 25