第一次回答:
写存储过程或者函数来做。
第二次回答:
过程如下,你还可以完善一下
create procedure get_table
@colname varchar(30),
@colvalue varchar(30),
@coltype varchar(30)=null,
@colformat varchar(30)=null
as
begin
declare @sql varchar(100), @tablename varchar(30)
create table #tables( tablename varchar(30))
declare cur_table cursor for
select name from sysobjects a
where type = 'U' and uid = 1 and exists( select 1 from syscolumns b where bid = aid and bname = @colname)
open cur_table
fetch cur_table into @tablename
WHILE @@FETCH_STATUS = 0 begin
select @sql = 'insert into #tables select'''+ @tablename +''' where exists( select 1 from '+ @tablename +' where '+ @colname +' = '''+ @colvalue +''')'
exec(@sql)
fetch cur_table into @tablename
end
close cur_table
deallocate cur_table
select from #tables
end
go
exec get_table 'name', '张三'
第三次回答:
这个过程我在SQL server 2005中执行过了,没有问题,而且这语法也在2000中适用。
过程,我写了几次,或许你看得是开始我写的,那有错,后来更正了。
如果报错,请把错误贴出来。
第四次回答:
你要把你的过程及语句,贴出来嘛,或者说明没有改动,完全按照我的,那你也得把你的SQL语句贴出来吧?
然后,你说:
报错如下,我是新手 麻烦大家了:
(所影响的行数为 0 行)
服务器: 消息 105,级别 15,状态 1,行 1
字符串 '张' 之前有未闭合的引号。
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '张' 附近有语法错误。
(所影响的行数为 0 行)
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '=' 附近有语法错误。
为什么有那么多报错?是否执行了一次语句就报了你列出的所有错误?
务必把你的语句贴出来。像我第三次回答一样,建立过程的语句(如果你没有改,则不需要列出只需要说明,没有改即可),及执行过程的语句(如果你没有改,则不需要列出只需要说明,没有改即可)。
第四次回答:
你重新执行一遍一下语句:
选中到“--到这里结束”的语句,一次执行。
drop procedure get_table
go
create procedure get_table
@colname varchar(30),
@colvalue varchar(30),
@coltype varchar(30)=null,
@colformat varchar(30)=null
as
begin
declare @sql varchar(100), @tablename varchar(30)
create table #tables( tablename varchar(30))
declare cur_table cursor for
select name from sysobjects a
where type = 'U' and uid = 1 and exists( select 1 from syscolumns b where bid = aid and bname = @colname)
open cur_table
fetch cur_table into @tablename
WHILE @@FETCH_STATUS = 0 begin
select @sql = 'insert into #tables select'''+ @tablename +''' where exists( select 1 from '+ @tablename +' where '+ @colname +' = '''+ @colvalue +''')'
exec(@sql)
fetch cur_table into @tablename
end
close cur_table
deallocate cur_table
select from #tables
end
go
exec get_table 'name, '张三'
--到这里结束
如果仍有问题,那么执行以下语句:
create table #tables( tablename varchar(30))
insert into #tables select aname from sysobjects a
where type = 'U' and uid = 1 and exists( select 1 from syscolumns b where bid = aid and bname = 'name')
select from #tables
drop table #tables
可以把所有包含字段'name'的表找出来,你自己再仔细研究,使用exec( SQL)的方式 SQL2000也是支持的,实在不行,你就找到表后,自己一个一个表再select也可以得到结果:
select count(1) from tablename where name = '张三'
结果大于零就说明这个表是你要找的表之一了。
自己研究下吧。
如何查询oracle一个数据库中包含有某个特定值的所有表及字段名
-我这里说的字段名跟列 是同一个意思
select column_name,
table_name,data_type ,data_length,data_precision,data_scale from user_tab_columns where column_name='字段名';
--根据字段名查出相关的表名出来。记录下来
--然后对查出来的表进行查询,找到含这内容字段的表
select from 表名 where 字段名='xiaoming'
数据库都是数据的存储,如果你们现在用的是EXCEL表的,那么你可以将EXCEL表转换成数据库表,然后将数据导入,再建立表关系。根据表关系用SQL语句进行查询组合。
如果你不熟悉数据库的话,建议你找个人帮你做。当然找我也行。
要先找到表
表不多的话查看表字段,看是否有类似Name字段。
表N多的话,看看有没有attendance
类似考勤的英文。这些英文一般都是排序的,
goodLuck。。
Create Procedure sp_Search(@Val Varchar(4000))
As
Begin
Declare @TBName Varchar(200)
Declare @ColName Varchar(200)
Declare @Rst int
Declare @Sql NVarchar(4000)
Declare @TB Table(TbName Varchar(200),ColName Varchar(200))
Declare myCur Cursor For
Select AName,BName From sysobjects A Inner join syscolumns B on aobject_id=bobject_id
Where AType='U' And system_Type_ID in(35,99,167,175,231,239)
Open myCur;
Fetch Next From myCur Into @TBName,@ColName
While @@FETCH_STATUS = 0
Begin
Set @Sql='If Exists(Select From ['+@TBName+'] Where ['+@ColName+'] Like @Val)'
Set @Sql=@Sql+'Set @Rst=1 '
Set @Sql=@Sql+'Else '
Set @Sql=@Sql+'Set @Rst=0 '
Exec sp_Executesql @sql,N'@Val Varchar(4000),@Rst int output',@Val,@Rst output
If(@Rst=1)
Insert Into @TB values(@TBName,@ColName)
Fetch Next From myCur Into @TBName,@ColName
End
Close myCur
DeAllocate myCur
Select From @TB
End
/
测试:
Exec sp_search '内容'
Exec sp_search '%内容%'
以上搜索包含的字段数据类型为Char,Varchar,Text,NChar,NVarchar,NText
思路:
先查询出所有表所有字符型栏位,然后每个表每个栏位查询值是否等于@Val,如果等则保存表名和字段名,最后返回结果
/
--汗,那是存储过程过程去遍历每个表的每个栏位,又不是要你一个写SQL
以上就是关于SQL如何查询一个数据库中的表全部的内容,包括:SQL如何查询一个数据库中的表、如何查询oracle一个数据库中包含有某个特定值的所有表及字段名、想建一个简单的数据库,便于数据的查询,怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)