当前位置:首页 » 编程语言 » sql字符数字排序

sql字符数字排序

发布时间: 2022-08-06 12:48:02

A. sql字符型字段按数字型字段排序实现方法

这是很久之前的就遇到的问题了,去年写了个WP插件:WordPress投票插件Ludou
Simple
Vote,由于有些使用者需要一个投票排行榜,所以需要用一条SQL来读取按得分排序的文章列表。

Ludou
Simple
Vote的投票得分结果是以自定义栏目的方式存储在WordPress的postmeta中,分值存放在meta_value字段,而meta_value字段类型是longtext,如果直接使用下面的SQL查询语句来排序:
复制代码
代码如下:
ORDER
BY
`meta_value`

那么按得分排序得到的结果可能是:
1
10
11
123
1234
2
25
253
3

由于是按字母顺序排列,所以123排在了2的前面,显然不符合我们的要求,那么怎样才能按照我们预想的数字顺序排序呢?下面介绍两种方法。
一、采用MySQL的cast函数,转换字段格式

这里我们将meta_value字段转换成数值类型的字段DECIMAL,然后再进行排序:
复制代码
代码如下:
ORDER
BY
CAST(`meta_value`
AS
DECIMAL)

需要注意的是,你所要排序的meta_value字段的值必须都是可转换成数字,否则将会出错。
二、使用MySQL绝对值函数ABS

使用MySQL绝对值函数ABS,它告诉MySQL使用绝对值来处理处理这个字段:
复制代码
代码如下:ORDER
BY
ABS(`meta_value`)

B. sql 数字+字符+数字排序问题

SELECT*FROMt3ORDERBY
CAST(LEFT(name,patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name))))ASINT),
SUBSTRING(NAME,patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name)+1)),1),
CAST(RIGHT(name,len(name)-patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name)+1)))ASINT)

就是麻烦点,其中的name列就是你的

1A2
3A2
3A10.....进行排序的列,改一下就好了,不管你第一个数字
或第二个数字有多少位都可以排序,只要你的字母在数字中只有一位就只有可以。

C. SQL字符串中加入数字怎么排列

原有表中的点击次数用的是 字符串型,现要求按点击次数排序,

select * from table t order by t.click desc

查出的是按左对齐排序的

99
97
9
89
783
7

而我要求的是按数字大小排的序

要修改为

select * from table t order by cast (t.click as int) desc

783
99
97
89
9
7

D. sql 字母数字组合 排序

截取分段排序

orderbyleft(kh,charindex('-',kh)-1)
,convert(int,substring(kh,charindex('-',kh)+1,charindex('-',kh,charindex('-',kh)+1)-charindex('-',kh)-1))
,right(kh,len(kh)-charindex('-',kh,charindex('-',kh)+1))

E. SQL 字母+数字排序

排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
如:
Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀 含义:
_BIN 二进制排序
_CI(CS) 是否区分大小写,CI不区分,CS区分
_AI(AS) 是否区分重音,AI不区分,AS区分
_KI(KS) 是否区分假名类型,KI不区分,KS区分
_WI(WS) 是否区分宽度 WI不区分,WS区分
区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项

F. sql数字字符串排序

--负责把字符串转换为Varbinary
--思路,把字符串按.拆分,然后转换成int,再转换成varbinary拼接
CreateFunctionf_Order(@SourceSqlVarchar(8000),@StrSeprateVarchar(2))
ReturnsVarbinary(8000)
As
Begin
Declare@tempVarbinary(8000)=0x0
Declare@chVarchar(100)
Set@SourceSql=@SourceSql+@StrSeprate
While(@SourceSql<>'')
Begin
Set@ch=left(@SourceSql,Charindex(@StrSeprate,@SourceSql,1)-1)
Set@temp=@temp+Convert(Varbinary,Convert(Int,@ch))
Set@SourceSql=Stuff(@SourceSql,1,Charindex(@StrSeprate,@SourceSql,1),'')
End
Return@temp
End
Go

--建表
CreatetableT
(
AVarchar(100)
)

--插入数据
InsertIntoTValues('1.1')
InsertIntoTValues('1.1.1')
InsertIntoTValues('1.1.2')
InsertIntoTValues('1.2')
InsertIntoTValues('10.1')
InsertIntoTValues('10.1.1')
InsertIntoTValues('10.1.2')
InsertIntoTValues('11.1')
InsertIntoTValues('2.1')
InsertIntoTValues('3.1')
InsertIntoTValues('4.1')

--测试
Select*fromT
orderbydbo.f_Order(A,'.')

G. sql 字符与数字排序

Sql给你,分给我
转换asc码,简洁方便
1是49 a是97 z就是123 只要让数字的码都大于字母就可以了,73是可以根据情况改的,要是有大写情况,也能处理
select Id from a order by (case when isNumEric(Id)=1 then ascii(Id)+73 else ascii(Id) end)

H. sql语句中对一个字段排序,字段中含有字符串和数字,(怎根据数字进行排序)

order by 字段名称+0 desc/asc的形式进行排序
order by 字段名称*1 desc/asc的形式进行排序

热点内容
图片服务器ftp 发布:2025-01-22 15:52:33 浏览:506
sql打开bak文件 发布:2025-01-22 15:47:32 浏览:106
opengl服务器源码 发布:2025-01-22 15:40:02 浏览:908
python部署服务 发布:2025-01-22 15:38:46 浏览:282
压缩机卡装 发布:2025-01-22 15:37:04 浏览:446
每天跑步40分钟可以缓解压力吗 发布:2025-01-22 15:33:24 浏览:448
线性表的链式存储结构与顺序存储 发布:2025-01-22 15:32:45 浏览:295
解压缩大师 发布:2025-01-22 15:26:51 浏览:386
xp访问win7共享打印机无权限 发布:2025-01-22 15:23:22 浏览:830
python中pandas 发布:2025-01-22 15:21:42 浏览:639