跪求sql语句高手,查找整个数据库中的特定字符
要求服务器上面有10个数据库,有没有什么语句可以一次性扫描服务器上所有数据库中所有表、所有的字段,里面是否包含了不必要的信息。如果不能一次扫描10个数据库,那么有没有什么...
要求服务器上面有10个数据库,有没有什么语句可以一次性扫描服务器上所有数据库中所有表、所有的字段,里面是否包含了不必要的信息。
如果不能一次扫描10个数据库,那么有没有什么语句可以查找出一个数据库中的所有的表、所有的字段里面是否包含了某个特殊字符的语句。
回答上来的重赏!
假如我现在有一个BOOK的数据库,里面有10个表,每个表大约有20w的数据,我想看看BOOK这个数据库里面有没有不.良.有.害.或违.法.的信息,或者出没出现一些不.良.词.组.要怎样实现?? 展开
如果不能一次扫描10个数据库,那么有没有什么语句可以查找出一个数据库中的所有的表、所有的字段里面是否包含了某个特殊字符的语句。
回答上来的重赏!
假如我现在有一个BOOK的数据库,里面有10个表,每个表大约有20w的数据,我想看看BOOK这个数据库里面有没有不.良.有.害.或违.法.的信息,或者出没出现一些不.良.词.组.要怎样实现?? 展开
3个回答
展开全部
declare @str nvarchar(10)
declare @tablename varchar(50)
declare @colname varchar(50)
declare @counts int
declare @sql nvarchar(2000)--以上定义变量
declare cur1 cursor for
select a.name tablename,B.name colname from sys.objects a,syscolumns b where a.object_id=b.id and a.type_desc='USER_TABLE'--定义游标
set @str='海' --设置要查找的字符
Open cur1 --打开游标
Fetch next From cur1 Into @tablename,@colname
While(@@Fetch_Status = 0) --循环
Begin
set @sql=N'select @counts=COUNT(*) from ' + @tablename + ' where charindex('''+@str+''','+@colname+')>0'
exec sp_executesql @sql,N'@counts int output',@counts output --执行动态sql
if @counts>0 --判断某个表某个字段是否存在特定字符
begin
print @tablename+','+@colname --打印表名及字段名
end
Fetch next From cur1 Into @tablename,@colname
End
Close cur1 --关闭游标
Deallocate cur1 --释放游标
展开全部
---给你一个提取所有表名和字段名的语句
提取表名 字段名称 类型名称
SELECT SNAME.NAME,SCOL.NAME,STYPE.NAME,STYPE.MAX_LENGTH
FROM SYSOBJECTS SNAME, sys.all_columns SCOL,sys.types STYPE WHERE SNAME.TYPE='U' AND
SCOL.OBJECT_ID=SNAME.ID AND STYPE.SYSTEM_TYPE_ID=SCOL.SYSTEM_TYPE_ID
ORDER BY SNAME.NAME
你说的那个非常难做啊,很理想化是遍历的概念
提取表名 字段名称 类型名称
SELECT SNAME.NAME,SCOL.NAME,STYPE.NAME,STYPE.MAX_LENGTH
FROM SYSOBJECTS SNAME, sys.all_columns SCOL,sys.types STYPE WHERE SNAME.TYPE='U' AND
SCOL.OBJECT_ID=SNAME.ID AND STYPE.SYSTEM_TYPE_ID=SCOL.SYSTEM_TYPE_ID
ORDER BY SNAME.NAME
你说的那个非常难做啊,很理想化是遍历的概念
追问
被逼的,我现在需要看看整个数据库里面是否存在不.良.有.害.信息,可是有一个数据库就有几十个表,又有N多数据所以需要一次查询的语句
追答
实话实说,这不是一句SQL解决的问题,是机制啊,存取机制,譬如通讯拆包分析,劫包分析,这还差不多
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种检查工作我想是不应该在这个时候进行,应该在数据追加到数据库之前来进行,就算你能找出实现这种功能的命令,那要检查一次数据库得多长时间啊!追加一条查一次?不现实!换实现方法吧!
追问
问题是沉郁数据的问题,而不是新提交的问题,我可以保证我接手后没有类似数据出现但是前面的数据就不能了,毕竟这个数据库存在了有5年以上了
追答
5年,如果库不是很多,库中表不是很多干脆一个表一个表查吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询