在sql中排序一个数字 [英] sorting an number in sql

查看:57
本文介绍了在sql中排序一个数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SQL排序:



数据类型varchar





应排序by

1.aaaa

5.xx

11.bbbbbb

12

15.如何获得此分类订单



错误

1.aaaa

11.bbbbbb

12

15.

5.xx

解决方案

create FUNCTION [dbo ]。[sortfunction]



@column varchar(max)



RETURNS varchar(max)

AS

BEGIN

声明@num varchar(50)

声明@space varchar(50)

声明@index int = 1



set @num = LEFT(SUBSTRING(@column,PATINDEX('%[0-9.-] %',@ column),8000),PATINDEX('%[^ 0-9 .-]%',SUBSTRING(@column,PATINDEX('%[0-9 .-]%',@ column),8000) +'X') - 1)

set @space = replicate('',20 - len(@num) )



返回替换(@column,@ num,@ space + @num)

结束

< br $> b $ b

----------------------------------- -----------------------------------

通过dbo从样本表顺序中选择。排序功能(键)


您可以参考在sql server中将字符串排序为数字 [ ^ ]。



如果字段只包含数字,为什么使用字符串数据类型而不是整数?


< blockquote> Hi Patil,



我希望你的列数据类型是varchar,这就是你所提到的排序的原因。
此处 [ ^ ]你可以找到解决方案。



希望这对你有所帮助。



问候,

RK


SQL Sorting :

Datatype varchar


Should sort by
1.aaaa
5.xx
11.bbbbbb
12
15. how can i get this sorting order

Wrong
1.aaaa
11.bbbbbb
12
15.
5.xx

解决方案

create FUNCTION [dbo].[sortingfunction]
(
@column varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
declare @num varchar(50)
declare @space varchar(50)
declare @index int = 1

set @num = LEFT(SUBSTRING(@column, PATINDEX('%[0-9.-]%', @ column), 8000), PATINDEX('%[^0-9.-]%', SUBSTRING(@column, PATINDEX('%[0-9.-]%', @ column), 8000) + 'X')-1)
set @space = replicate(' ', 20 - len(@num))

return replace(@column, @num, @space + @num)
END


----------------------------------------------------------------------
select from sampletable order by dbo.sortingfunction(key)


You may refer to Sort string as number in sql server[^].

If the field only contains numbers, why using a string datatype instead of an integer one?


Hi Patil,

I hope you column data type is varchar, that is the reason sorting is done like what you have mentioned.
Here[^] you can find solution.

Hope this helps you a bit.

Regards,
RK


这篇关于在sql中排序一个数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆