Foxtable(狐表)用户栏目专家坐堂 → [求助]如何用SQL求主数字?


  共有4916人关注过本帖树形打印复制链接

主题:[求助]如何用SQL求主数字?

帅哥哟,离线,有人找我吗?
don
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
[求助]如何用SQL求主数字?  发帖心情 Post By:2013/10/8 14:57:00 [只看该作者]

编号
OLY131-4
OLY-1201
OLY-1090-02
OLY-1140-03
OLY-1014-06
OLY-1203
OLY-1204
OLY-1207
OLY-1026-01
OLY-1208
OLY-1209
OLY-1210
OLY215
MW-1001
OLY-1131-03
OLY-1004-02
MW-1002
MW-1003
MW-1004
上面为编号列,编号有些不规范,现想通过SQL(内部表)求主数字:

没有"-"的编号,取数字部分,如OLY215,则取215

有1个"-"分隔符的,如OLY-1133,则取1133,如OLY235-2,则取235;
有2个"-"分隔符的,取中间数字,如OLY-1131-03,则取1131


[此贴子已经被作者于2013-10-8 15:02:22编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/8 15:06:00 [只看该作者]

这个,使用代码做更加好吧.

 回到顶部
帅哥哟,离线,有人找我吗?
don
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/10/8 15:19:00 [只看该作者]

以下是引用Bin在2013-10-8 15:06:00的发言:
这个,使用代码做更加好吧.
使用代码是应该更加好,只是我想得到这个主数字后,然后生成一个格式化数字,再用这个格式化数字作为关键字段通过SQL 的 INNER JOIN 得出我想要的数据,
如用代码,只怕只能用DeleteFor删除不合条件的数据了,效率可能低点


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/8 15:21:00 [只看该作者]

用SQL 那可是大工程.难度挺高得,工作量也大. 效率也不会高到哪里去.

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/10/8 16:20:00 [只看该作者]

这么复杂,用SQL,俺弄不好。

代码倒不算难:

 

If e.DataCol.Name = "第一列" Then
    If IsNumeric(e.DataRow(e.DataCol)) Then
        Return
    End If
    Dim s As String = e.DataRow(e.DataCol)
    If s.Split("-").Length > 1 Then
        If s.Split("-")(0).StartsWith("OLY") AndAlso s.Split("-")(0).Length > 3  Then
            s = s.Split("-")(0).SubString(3)
        ElseIf s.Split("-")(0).StartsWith("MW") AndAlso s.Split("-")(0).Length > 2 Then
            s = s.Split("-")(0).SubString(2)
        Else
            s = s.Split("-")(1)
        End If
    Else
        If s.StartsWith("OLY") Then
            s = s.SubString(3)
        ElseIf s.StartsWith("MW")
            s = s.SubString(2)
        End If
    End If
    e.DataRow(e.DataCol) = s
End If

[此贴子已经被作者于2013-10-8 16:35:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
don
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/10/8 16:44:00 [只看该作者]

多謝兩位!

 回到顶部