PB 怎么截取字符串中的数字

AnYaYinXiaoHunHun 2013-10-19 02:13:52
按条件查询数据库后

编号列为:

BD001
BD111
BD999
BD1000

获取最大的值的时候。获取到的是BD999

本来我是想在数据窗口添加一个计算列,截取数字后排序,然后取出最大值。

主要一个问题就是,前面的字符串是根据拼音码组成的。有可能是三位或者四位。所以我计算列不知道从第几位开始截取。

求帮忙


...全文
808 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
狂风吹111 2013-10-29
  • 打赏
  • 举报
回复
利用替换函数,把字符全部替换成 '',再用剩下的结果比较!
SKY_4K_PPM 2013-10-19
  • 打赏
  • 举报
回复
在数据库里写函数,如在Oracle中: create function f_string_num_max(varchar2 source) return number is declare v_num int; v_string varchar2(100); begin v_num:= to_number(regrep_substr(source,'d+')) return v_num; end f_string_num_max; /
AnYaYinXiaoHunHun 2013-10-19
  • 打赏
  • 举报
回复
引用 4 楼 fengxiaohan211 的回复:
[quote=引用 3 楼 AnYaYinXiaoHunHun 的回复:] [quote=引用 1 楼 fengxiaohan211 的回复:] 循环截取判断ascii吧 遇到不是字符的就开始截取数字吧
几十万条数据的话那太慢了[/quote] 别的好像也没有啥好办法吧[/quote] 唉,不然只能去商量生成编号的时候,能不能在拼音码和数字之间加上“-”符号。想了一天,找不出好的解决方法
AnYaYinXiaoHunHun 2013-10-19
  • 打赏
  • 举报
回复
引用 2 楼 hxbkkk 的回复:
或者一个字符一个字符循环 for i = 1 to len(id) if isnumber(min(i,1)) then exit next number = right(len(id) - i + 1)
数据量大的话很难实现
fengxiaohan211 2013-10-19
  • 打赏
  • 举报
回复
引用 3 楼 AnYaYinXiaoHunHun 的回复:
[quote=引用 1 楼 fengxiaohan211 的回复:] 循环截取判断ascii吧 遇到不是字符的就开始截取数字吧
几十万条数据的话那太慢了[/quote] 别的好像也没有啥好办法吧
AnYaYinXiaoHunHun 2013-10-19
  • 打赏
  • 举报
回复
引用 1 楼 fengxiaohan211 的回复:
循环截取判断ascii吧 遇到不是字符的就开始截取数字吧
几十万条数据的话那太慢了
hxbkkk 2013-10-19
  • 打赏
  • 举报
回复
或者一个字符一个字符循环 for i = 1 to len(id) if isnumber(min(i,1)) then exit next number = right(len(id) - i + 1)
fengxiaohan211 2013-10-19
  • 打赏
  • 举报
回复
循环截取判断ascii吧 遇到不是字符的就开始截取数字吧

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧