请问如何将字符串字段按数值形式排序,如1,2,3...而不是1,10...,2,20...3,30...(100分)

  • 主题发起人 主题发起人 jack2000
  • 开始时间 开始时间
J

jack2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我的数据库字段大部分情况下用数值,而有时会用非数值表示,如1a,1-1等。当我在排序时
又不想按字符串形式排序,而希望按数值方式排序,请问哪位大虾帮助,不是表面回答而是
具体如何操作
 
将前面的数字部分提取出来,转化为integer,然后按int的值将其分组排序,再在组内进行字符串排序。
 
谁能用SQL语言解决,在加100分。
select * from qb.dbf
where contr='''+mcontr+'''
order by ?
?部分如何编写。
 
? 写成 CONVERT(int, CharField)
 
你在写入的时候把 1 写成 00000001 不就行了吗?使用的时候去点前面多余的 0
 
order by to_number(id)
id:要排序的列名:
to_number :你的数据库中的格式转换。在数据库中直接转换为数值形式。
:) are you ok???
 
假设字段1为字符型,数据表中一共有3个字段
select CONVERT(int, 字段1) as aa,字段2,字段3 from table
where contr='''+mcontr+'''
order by aa
 
wo 我也不懂呀
 
在sql 中
select * from youtable order by convert(Int aa)
aa为字段名
 
解决了吗?
直接order by 字符串也可以,但前缀要相同。
 
不行啊!convert(int,id)不认,总是出错,谁有更好的方法。
 
convert()函数应该是SQL Server的函数,如使用其它数据库,则用其它的函数。
如ACCESS中可用Str()
 
cast(xx as integer) or cast ( xx,int) ... 自己试试看
 
建议以固定的格式储存字串,用SQLSERVER的字串处理函数提取需要的部分。
在转换为数字。
 
可以这么处理,如果你的排序字段是CHAR的话。
1,SQL照常写,照常用。
2,处理结果集的时候,使用FIELDBYNAME('FIELDNAME').ASINTEGER取出字段数据。
3,需要按照字符串使用的时候,再用INTTOSTR转一下就好了。

如果含有非数字字符,就只能在输入的时候多注意了。
 
如果使用 MS SQL 可以通过修改排序的字符集实现。
 
多谢各位参与
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
922
SUNSTONE的Delphi笔记
S
后退
顶部