oracle 表中如何对按含有字母和数字的编号来进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 表中如何对按含有字母和数字的编号来进行排序相关的知识,希望对你有一定的参考价值。

我的编号(关键字)是PRO+数字的形式。我设置了按这个编号来进行升序排序,可就是没有完全按这个编号中的数字部分的升序来进行排序。如图!求解!

排序的话,用order by来处理即可。

比如:

col

a123

a234

b999

b335

select * from tablename order by col;

结果就是

col

a123

a234

b335

b999


如果按倒序排列:

select * from tablename order by col desc;

结果就是

col

b999

b335

a234

a123

参考技术A 直接order by pro_d 是按字符串排序的,不能得到按数字大小的排序效果;
应该去掉前边的字符然后再排序: order by to_number(substr(pro_d, 4))本回答被提问者采纳
参考技术B 因为编号是按字符串类型存储的,排序时也是按照字符串比较来排序的,如果想按数字排序,必须先获取后面的数字并转换成整形再比较排序,order by to_number(substr(pro_d, 4)) 参考技术C 按照了 PR01,PR010; PR02, PR020;只不过不是你要的效果
如果你的数据是PR01,PR02,PR03,PR04.....这样的效果应该是你要的
这个是数据本身的问题
参考技术D 在数据库中自定义函数随机生成字符串,然后更新数据库。
update 表 set 字段=dbo.gen_key() where 主键字段='值'

C语言从键盘输入一个含有英文字母,英文符号,数字的字符串,如何过滤其中的字母??

参考技术A

#include <stdio.h>

#include <string.h>

int main()

char str[111];

int k=0;

gets(str);

for(int i=0;i<strlen(str);i++)

if(!(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'))

str[k++]=str[i];//非字母字符保留,字母字符删除; 

str[k]='\\0';//新字符串加个结束符 

puts(str);

return 0;

以上是关于oracle 表中如何对按含有字母和数字的编号来进行排序的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何判断数字字串中是不是含有英文字母

Oracle数据库操作时如何使用LOWER()UPPER()函数

如何查出在oracle 表中的某个字段中符合以下要求:包括除汉字、数字、字母、中画线、括弧外的其它字符

Oracle数据库操作时如何使用LOWER()、UPPER()函数

字符单链表识别数字,字母,其它字符,并分为三个循环链表的算法c++实现

如何对按客户分组的多列和多行求和