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中匹配字符串的宿主变量了。
也就是说,将终端得到的数据变成形如"%*******%%%%%%%%%%"这样的匹配字符串,用于数据库的查询。这样,就可以成功的实现查询数据库中该项包含"******"字符串的所有项。
相关文档:
-- 示例一, 使用证书加密数据.
-- 建立测试数据表
CREATE TABLE tb(ID int IDENTITY (1,1),data varbinary (8000));
GO
-- 建立证书一, 该证书使用数据库主密钥来加密
CREATE CERTIFICATE Cert_Demo1
WITH
SUBJECT = N'cert1 encryption by database master key' ,
START_DATE = ......
SQL 查看所有表名:
select name from sysobjects where type='U'
查询表的所有字段名:
Select name from syscolumns Where ID=OBJECT_ID('表名')
select * from information_schema.tables
select * from information_schema.views
select * from information_schema.columns
ACCESS
查看所有表名:
se ......
在SQL Server 2008下,网上以前流行的截断日志并收缩文件的方法不适合了,报语法错误。
同时因为我的数据库日志增长非常快,大概每天在1G以上,因此必须对其进行收缩。
经过在系统上的测试,感觉用SQL SERVER的维护计划更可行,现将操作方式简介如下:
注:下面的说明中也提到了使用差异备份,因为数据库文件增长也非 ......
-- sql 2005
1.rownum用法
select * from(
Select rownum=row_number() over(order by 1),* from table
)a where rownum between  ......