sql查询整个数据库中存在某个列名或者某个列包含某个值的语句
2016-03-18 14:05
543 查看
如果是指的列名的话,很简单,将 like 后替代为你所需要查找的列名即可
select sysobjects.name as tablename,syscolumns.name as columnname
from syscolumns join sysobjects on sysobjects.id = syscolumns.id
where syscolumns.name like '%此处为列名%'
如果是指的一个值的话,这种情况相对要复杂一点,需要遍历数据库。如下:
declare@str varchar(100)
set@str='张三'--要搜索的字符串
declare@s varchar(8000)
declaretb cursorlocalfor
selects='if exists(select 1 from ['+b.name+'] where convert(varchar,['+a.name+']) like ''%'+@str+'%'')
print ''select ['+a.name+'] from ['+b.name+']'''
fromsyscolumns a joinsysobjects b ona.id=b.id
whereb.xtype='U'anda.status>=0
--所查列的字段类型
anda.xusertype in(175,239,231,167,56,60,108,106)
opentb
fetchnextfromtb into@s
while @@fetch_status=0
begin
exec(@s)
fetchnextfromtb into@s
end
closetb
deallocatetb
select sysobjects.name as tablename,syscolumns.name as columnname
from syscolumns join sysobjects on sysobjects.id = syscolumns.id
where syscolumns.name like '%此处为列名%'
如果是指的一个值的话,这种情况相对要复杂一点,需要遍历数据库。如下:
declare@str varchar(100)
set@str='张三'--要搜索的字符串
declare@s varchar(8000)
declaretb cursorlocalfor
selects='if exists(select 1 from ['+b.name+'] where convert(varchar,['+a.name+']) like ''%'+@str+'%'')
print ''select ['+a.name+'] from ['+b.name+']'''
fromsyscolumns a joinsysobjects b ona.id=b.id
whereb.xtype='U'anda.status>=0
--所查列的字段类型
anda.xusertype in(175,239,231,167,56,60,108,106)
opentb
fetchnextfromtb into@s
while @@fetch_status=0
begin
exec(@s)
fetchnextfromtb into@s
end
closetb
deallocatetb
相关文章推荐
- mysql数据的备份恢复和还原
- 仅仅用一条SQL语句就完成七八十行java代码的工作,并且大大节省资源开销
- 快捷修复数据库try to repair it错误
- oracle显示窗口列表
- MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法
- mysql常用引擎详解
- mysql开户、权限设置、建库流程及常用操作
- mysql数据包导入或接受失败异常处理
- 经过线上实战的redis 分布式锁与zookeeper分布式锁区别
- mysql 字符集设置
- 数据库事务知识梳理.概念
- linq和ssh和redis的关联
- android和excel和oracle的关联
- mysql在服务器异常断电后,无法重启解决办法
- sqlplus和jboss和jsp的关联
- com和plsql和redis的关联
- mysql删除重复数据
- Oracle 索引 详解
- mysql 日志
- sqlplus和maven和mangodb的关联