跪求sql语句高手,查找整个数据库中的特定字符

2024-11-07 17:59:07
推荐回答(3个)
回答(1):

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 --释放游标

回答(2):

---给你一个提取所有表名和字段名的语句
提取表名 字段名称 类型名称
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

你说的那个非常难做啊,很理想化是遍历的概念

回答(3):

这种检查工作我想是不应该在这个时候进行,应该在数据追加到数据库之前来进行,就算你能找出实现这种功能的命令,那要检查一次数据库得多长时间啊!追加一条查一次?不现实!换实现方法吧!