存储过程中很复杂的字符串截取,遗留问题,我头大了

深思千年 2012-03-26 07:51:48
有如下字符串:(下列字符间相连,没有空格,为了方便观看,手工弄的空格)
字符串格式为
用户名,密码$站点名|包编号1#包编号2#包编号3|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号4#包编号5#包编号5|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号7#包编号8#包编号9|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号10#包编号11#包编号12|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&%
用户名,密码$站点名|包编号13#包编号14#包编号15|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号16#包编号17#包编号18|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号19#包编号20#包编号21|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号22#包编号23#包编号24|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&%
用户名,密码$站点名|包编号25#包编号26#包编号27|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号28#包编号29#包编号30|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号31#包编号32#包编号33|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号34#包编号34#包编号36|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
用户名,密码$站点名|包编号37#包编号38#包编号39|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&%
$站点名|包编号40#包编号41#包编号42|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号43#包编号44#包编号45|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
$站点名|包编号46#包编号47#包编号48|面值总额#现金收支#ivt转账#兑奖金额#pos转账#欠款#还款&
*/解释:
上面是多个文件中的数据拼接起来的。
以“%”相隔的是不同文件中的数据,上面只有4个文件,故只有3个“%”,若有n个文件,那么会有(n-1)个“%”。

目的:
得到用户名(varchar),站点编号(varchar),包编号(varchar),面值总额(bigint),现金收支(bigint),ivt转账(bigint),兑奖金额(bigint),pos转账(bigint),欠款(bigint),还款(bigint),插入到表中。

即可以执行下列语句
INSERT INTO 表名(用户名列,站点编号列,包编号列,面值总额列,现金收支列,ivt转账列,兑奖金额列,pos转账列,欠款列,还款列) VALUES(用户名,站点编号,包编号1,面值总额,现金收支,ivt转账,兑奖金额,pos转账,欠款,还款)

INSERT INTO 表名(用户名列,站点编号列,包编号列,面值总额列,现金收支列,ivt转账列,兑奖金额列,pos转账列,欠款列,还款列) VALUES(用户名,站点编号,包编号2,面值总额,现金收支,ivt转账,兑奖金额,pos转账,欠款,还款)
.
.
.
INSERT INTO 表名(用户名列,站点编号列,包编号列,面值总额列,现金收支列,ivt转账列,兑奖金额列,pos转账列,欠款列,还款列) VALUES(用户名,站点编号,包编号n,面值总额,现金收支,ivt转账,兑奖金额,pos转账,欠款,还款)
注意:文件个数不确定,可能1个,可能2个,可能n个(0个就不用判断和处理了,在.java中处理)
每个站点下包编号个数不确定。上面每个站点都有3个包编号。实际可能1个,2个,n个(0个就不用判断了)

是不是可以写个字符串截取的函数,在存储过程中多次调用它啊?
字符串调用函数 2个参数,n个不固定返回值。

遇到问题:
这是以前的遗留问题。if-else即嵌套太多了,弄得几个我就晕了。

希望有好心人帮忙!感激不尽啊!第三次发帖,不知道给多少分。分不够的话,还可以再加啊! 要联系我的话,可以加我QQ:872082002 或邮箱:ylchou@qq.com
...全文
159 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
深思千年 2012-04-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 2 楼 ylchou 的回复:

引用 1 楼 vidor 的回复:
直接存为文本
openrowset(bluk, '?', formatfile='?')

你好 vidor 我是要截取文本中的相应数据啊


formatfile负责解析数据。
[/Quote]唉!看不懂啊
Vidor 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ylchou 的回复:]

引用 1 楼 vidor 的回复:
直接存为文本
openrowset(bluk, '?', formatfile='?')

你好 vidor 我是要截取文本中的相应数据啊
[/Quote]

formatfile负责解析数据。
深思千年 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vidor 的回复:]
直接存为文本
openrowset(bluk, '?', formatfile='?')
[/Quote]
你好 vidor 我是要截取文本中的相应数据啊
Vidor 2012-03-26
  • 打赏
  • 举报
回复
直接存为文本
openrowset(bluk, '?', formatfile='?')

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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