select size from sysfiles where name like '%[_]Log'我用上面这句查询当前数据库的日志文件大小,在sqlserver2008下查询正确但在sqlserver2000下却差不多结果,何解?看联机丛书也没什么特别的说明啊
解决方案 »
- 一个程序 excel导入到2005数据库
- SQL 如何把一列转化为有列名的 一列列呢
- 查无重复数据的前N条记录,求高效的sql语句
- 在触发器中能不能把另一台机器上的数据库的数据写到本地数据库的表中
- sql语句,详情请进。
- 请高手帮忙帮我看个SQL语句 :聚合不应出现在 WHERE 子句中
- 怎样设计数据库?将商品加入收藏夹,然后这个用户以后每次上线都可以查看自己的收藏夹,类似QQ我的衣柜功能。
- 如何列举局域网中所有可用的SQL SERVER及其Database
- select distinct userId, username, otherdata from table
- SQL server2016安装一部分后显示操作已取消
- 求教按顺序自动分配的语句
- 菜鸟求解数据库第一范式概念。。。
--2000下运行,找不到对应的值
--2005/2008下可以顺利得到数据联机丛书上面没有改进。可能是2000里面的BUG。到2005,2008里面改善了!
--sql2000
like ‘%xxx’ 无法使用索引
--sql2005
like ‘%xxx’ 根据选择度的大小 可能会用到索引
我都是这样 很好很强大。。
select * from sysfiles where NAME like '%Log%'
上面的查询是所有包含Log文本的记录,可能有误的,比如数据库名字是LogABC,
那么他有两个文件LogABC_Data, LogABC_Log
查出来是两条记录而我只需要以_Log结尾的日志文件记录
from sysfiles where
CHARINDEX('_LOG',NAME)=LEN(NAME)-LEN('_LOG')+1试试这样吧,
LEN(LTRIM(RTRIM(REVERSE(NAME))))from sysfiles
----------- -----------
128 15
128 14(所影响的行数为 2 行)
用like查询 以_XXX结尾的查询语句
原来就是这个原因,呵呵分别查了一下联机丛书里的sysfiles字段说明
2000下
name nchar(128) 文件的逻辑名称。 2008下 是sysname 即 nvarchar(128)这种不定长的字符串名称,很明显不能设为char数据类型不知道微软当时是怎么想的