在sql中排序一个数字 [英] sorting an number in sql
本文介绍了在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屋!
查看全文