cobol写sql命令

SQL中WHERE子句中可以利用LIKE来匹配相似的数据项,当时我得到的结论是可以使用"%"来匹配字符串,在SPUFI中使用,的确可以得到字符串匹配的效果。如:

    SELECT * FROM TEST

          WHERE TESTID LIKE "CZX%";

    上面这句在SPUFI中提交执行后,就可以将TEST表中所有TESTID中所有以"CZX"字符串开头的项都找到。

    然而,在COBOL中执行嵌入的SQL语句的时候,"%"就只能匹配一个或空的字符了,如:

    EXEC SQL

         SELECT * FROM TEST

                WHERE TESTID LIKE "CZX%"

    END-EXEC.

    就只能查询出以"CZX"开头的且最后长度不超过4的项。

    一开始的时候我并没有注意到这个问题,因此,在匹配字符串的时候,老是查询不到预期的数据。当我最终发现这个问题的时候,也没找到该用什么符号来匹配字符串,最后,想了一个利用"%"来完成字符串匹配的方法:

    1、声明一个字符串匹配的变量,长度为数据库中要匹配项长度+2,如:TESTID-FILTER全部存放"%";

    2、将从终端获得的筛选字符串,如TESTID-INPUT去掉空格后,插入到1中定义的变量的第二位;

    3、得到字符串TESTID-FILTER就是用在LIKE中匹配字符串的宿主变量了。

    也就是说,将终端得到的数据变成形如"%*******%%%%%%%%%%"这样的匹配字符串,用于数据库的查询。这样,就可以成功的实现查询数据库中该项包含"******"字符串的所有项。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值