如何找出name列中包含有"JL"的所有表

zzxap 2010-08-05 11:05:38
如何找出name列中包含有"JL"的所有表。 ='JL'
...全文
103 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixianxxx 2010-08-05
  • 打赏
  • 举报
回复
DECLARE @tb TABLE (tbName VARCHAR(100))
DECLARE @s VARCHAR(100)

DECLARE curName CURSOR FOR
SELECT k.name
FROM syscolumns s JOIN sysobjects k ON s.id=k.id
WHERE s.name='dbname' AND k.type='u';

OPEN curName;

FETCH next FROM curName INTO @s

WHILE @@FETCH_STATUS=0
BEGIN
INSERT @tb
exec('select '''+@s+''' from '+@s+' where dbname like ''%JL%''');
FETCH next FROM curName INTO @s
END
close curName
deallocate curName


select * from @tb
华夏小卒 2010-08-05
  • 打赏
  • 举报
回复
declare @name varchar(50)
declare @t table (name varchar(20))


declare cur cursor for
select object_name(c.object_id)
from sys.columns c,sys.tables o
where c.name='name' and c.object_id=o.object_id

open cur
fetch next from cur into @name
while @@fetch_status=0
begin
insert @t exec('select name from '+@name+' where charindex(''JL'',NAME)>0')


fetch next from cur into @name
end
close cur
deallocate cur


select * from @t
zzxap 2010-08-05
  • 打赏
  • 举报
回复
看来还是要写一个循环
天-笑 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zzxap 的回复:]
库内有200个表。每个表中都有一列 dbname。 找出dbname中有没有值“JL”。有就提取表名
[/Quote]

1:从系统视图 sys.tables sys.columns 查询出所有 包含 name的字段
2:滚一下上一个查询的结果集,并 执行 select count(name) from 表 where name like '%JL%'
3: 将存在的 表名 查入一个临时表
4:select * from 临时表
zzxap 2010-08-05
  • 打赏
  • 举报
回复
库内有200个表。每个表中都有一列 dbname。 找出dbname中有没有值“JL”。有就提取表名
zzxap 2010-08-05
  • 打赏
  • 举报
回复
不是表名包含 ,而是表中的列有没有值“JL”
昵称被占用了 2010-08-05
  • 打赏
  • 举报
回复
JL是列名?
那这样查

select name from sys.tables a
where exists (
select * from sys.columns
where object_id = a.object_id
and name = 'JL'
)


2000以前版本:
select name from sysobjects a
where xtype= 'u'
and exists (
select * from syscolumns
where id = a.id
and name = 'JL'
)
天-笑 2010-08-05
  • 打赏
  • 举报
回复
1:从系统视图 sys.tables sys.columns 查询出所有 包含 name的字段
2:滚一下上一个查询的结果集,并 执行 select count(name) from 表 where name like '%JL%'
3: 将存在的 表名 查入一个临时表
4:select * from 临时表
aaron_gl 2010-08-05
  • 打赏
  • 举报
回复
like '%JL%'
昵称被占用了 2010-08-05
  • 打赏
  • 举报
回复
select name from sys.tables where name like '%JL%'

2000以前版本:
select name from sysobjects where name like '%JL%' and xtype = 'u'

「已注销」 2010-08-05
  • 打赏
  • 举报
回复
好久没来了,风语者近来安好?
「已注销」 2010-08-05
  • 打赏
  • 举报
回复
拙见:应该是要写循环的,实际依据的是某个字段的数据内容,而不是table名与column名,
所以只通过sys.tables与sys.columns怎么能得到某个table的某个字段的具体数据内容呢?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧