在SQL Server 2005所有表中搜索某个指定列的方法

来源:脚本之家  责任编辑:小易  

1、在Oracle中,这样写就可以解决了select column_name,table_nam

有时候我们只知道列的名字,但是不知道这列数据到底在哪个表里面,那么可以用下面的办法把含有这列数据的表查找出来。

DECLARE @Name nvarchar(255),@Sql nvarchar(4000),@v

复制代码 代码如下:

这个很简单,语句如下:SELECT 字段1,字段2 FROM 表名 WHERE 字段x l

Select O.name objectName, C.name ColumnName from sys.columns C inner join sys.objects O ON C.object_id=O.object_id where C.name like '%ColumnName%'order by O.name, C.name

一、举个例子表名为zwj,字段为sp,查询sp字段中含有'所有'的语句为selec

 

有游标循环即可。decalre @fieldName varchar(128)declare

在你实际试用中,把ColumnName换成你要查的列的名字就可以了。

中国综合格斗名将李景亮,生于1988年3月20日,新疆人。师从\"草原骄子\"宝力高,在散打和摔跤方面都获得过冠军,绰号\"吸血魔\"。现为北京综合格斗拳馆拳天下搏击俱乐部成员。作为UFC第一人\"草原狼\"张铁泉的队友,李景亮被公认为中国MMA次中量级新一代领军人物,是继张铁泉、居马别克后第三位进军UFC的中国人。谢孟伟,1989年3月4日出生于河北省保定市,中国影视男演员。毕业于中国戏曲学院。2003年,因出演电视剧《小兵张嘎》中男主人公嘎子一角,被人们所熟识,也因此剧,谢孟伟被观众称为“嘎子哥”,开始逐渐在各大媒体和观众的视线里活跃。2006年,他又以全国生、旦、净、丑专业总排名第一的成

字符串在某字段里时,如何写搜索的SQL语句

据新闻报道,前不久江苏扬州市的陶女士收到一张百元钞票,为了检验真假,当时是对着太阳看了一下钞票的水印,谁知这一看竟然发现了一个“疑块”。视频截图据陶女士介绍,百元钞票毛泽东水印上面的眉毛,可以看到跟正常眉毛不一样,它是往上扬起的。记者看到,陶女士手中百元钞票是2005年版,仔细看看,头像水印是有点特别,右侧眉毛似乎微微上扬,和其他百元钞票对比似乎更为明显,当时去银行鉴别被认为是真币。陶女士偶然在网上看到关于人民币的报道,认为自己的这张百元钞票是一张错版币。网上介绍的错版币是毛泽东下巴这边有一道竖印,收藏价值是一百万以上,陶女士觉得很新奇,决定把自己的人民币拿出来鉴定一下真假。那么陶女士手中的这

问题描述:

《战狼2》现在的总票房已经突破50亿,截止到8月21号上午起票房总成绩如下图:至于《战狼2》为什么被美国影评人激烈批评,且票房惨淡,我想原因有以下几点:1.中美文化的差异,这个差异是不可避免的,就算《战狼2》的票房成绩摆在那里,他们也还是会各种鸡蛋里挑骨头,同时像这样的动作片在美国来说很多,同类型的电影制作水准和演员名气都比《战狼2》要高,《战狼2》对比各种美国大片,肯定得到的批评多。2.之前中国电影穿出各种票房造假丑闻,所以在很大程度上也影响了美国影评人对这部电影的客观判断,再加上一些其他因素,这些东西就上升到一个其他的层次去讨论了。3.中国电影在啊美国票房惨淡是常有的事,《战狼2》50亿的

经常遇到这种问题,我们搜索的条件是某字符串包含在某字段,如果是某字段包含在某字符串,我们知道可以用in,

童年应该是快乐的,充满希望的,他们这时理应去充分感受大自然的美好,人生的幸福快意。幼儿教育的重点本身应该以游戏和活动为主,还有就是生活能力的初步培养。并不应该把知识的灌输放在首位,尤其留家庭作业更是可笑至极!童稚的肩头被压上沉甸甸的作业负担,让他们怎么能够受得了?快乐的花蕾怎么能不被摧残凋谢?不过这样的事例其实在当下并不少见,归根结底,都是分数教育埋下的祸根!

如sql="select * form tb where tb.name in(" & names & " )”  

注释:name是表tb的字段,name是获得的字符串,该句查询字段name在给的字符串names里的所有集合)

这种方法自然不必多说,但我们通常遇到的问题是“反着来”,即  "name"字符串 在 tb.name表字段里,如,表tb的name字段值为:张三,李四,王五,赵六

而我们要查询的name=张三,这就要判断当表的name字段包含查询条件,也就是有“张三”时,即为符合查询

解决方法:

1、最先想到的当然是like查询(并非终极解决方案,终极方法继续往下看)

如sql="select * form tb where tb.name  like  '%" & 张三 & "%' ” 

解释一下,这个语句,能查询到所有表的name字段里有”张三“的集合,可是,假设有人的名字叫”秦张三八“,他的名字不管爹妈怎么取的,总之也有”张三“两个字,这样很显然也符合查询情况,那么他自然也会被查询出来,而我们只要”张三“,不要”秦张三八“,看下一步

2、试想一下,如果字段里的值不是“张三,李四,王五,赵六”,而是“,张三,李四,王五,赵六,”

发现什么了?

是的,字符串前后多了个逗号,这就有用了,因为逗号可以作为限制条件,如果“秦张三八”此时也在这个字段里,他的前后也有逗号,这样按逗号来控制查询,就精确到位了

好了,改写查询成:sql="select * form tb where tb.name  like  '%," & 张三 & ",%' ”

到此,原理和解决方法就已经全部说完了,但是,你可能还会遇到以下问题,继续看第三步。

3、有时类似这种带逗号的字段都是我们在保存的时候勾选了多选check得来的值,这时写入数据库的时候,会自动在不同的check值后加上逗号,

比如,请选择你的兴趣爱好,你可能会勾选“看书(value=1)”,“听歌(value=21)”,“爬山(value=13)”

此时得到的值就是xingquaihao="1, 21, 13",将这个字段保存,在数据库里也就是这种格式,但是此时如果直接按照上面的查询方式来查询的话,

直接用:sql="select * form tb where xingquaihao  like  '%" & 1 & "%' ”   将得到所有含1的,就算是21、13中的1,也会被查出来

将字段前后加上逗号,变成“,1, 21, 13,”的时候,如果我们查21或者13,改成:sql="select * form tb where xingquaihao  like  '%," & 21 & ",%' ” 结果是什么都查不出来

为什么明明有值,却查不出来呢?

因为自动勾选,然后保存的字段中间有空格,比如“1, 21, 13”,1的后面是一个逗号,逗号后面是一个空格,然后才是21

解决方法很简单了,在勾选完后,入库前把空格去掉,

xingquaihao="1, 21, 13"

xingquaihao=replace(xingquaihao," ","") '将空格删除

如此得到的就是紧凑型的值了,再按照上面的方法查询,搞定!

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

用SQL怎样查询到包含有某个字段的所有表名

select a.name 表名,b.name 列名 from sysobjects a,syscolumns b where a.id = b.id and b.name = '表名'and a.type='U'

还有一种:

SELECT b.name as TableName,a.name as columnname

From syscolumns a INNER JOIN sysobjects b

ON a.id=b.id

AND b.type=’U’

AND a.name=’你的字段名字’

SQLSERVER 如何查询整个数据库中某个特定值所在的表和字段

以前写过类似的,参考一下:

declare @str nvarchar(20)

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='CT无袖开胸上衣' --设置要查找的字符

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 --释放游标更多追问追答追问消息 4104,级别 16,状态 1,第 7 行

The multi-part identifier "B.name" could not be bound.追答什么版本sqlserver,远程方便不?追问我看过你以前发的,但是查询一个早上都没查完

sql语句怎么在一个数据库中查找拥有同一字段名的所有表?

1、在Oracle中,这样写就可以解决了

select column_name,table_name from user_tab_columns where column_name= 'test_name'

2、在SqlServer中,这样写就可以解决了

SELECT COLUMN_NAME,TABLE_NAME FROM INFORMATION_SCHEMA.columns WHERE COLUMN_NAME='test_name'

SQL即结构化查询语言(Structured Query

Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是最频繁的。

sqlserver如何多张表中搜索某个数据

如果你想这样做,肯定有这样的SQL,可以写出来。

不过肯定是不建议这么做,效率肯定会很低。

要自己拼SQL。只用SQL语句也能实现不过非常麻烦。

SQL SERVER 2000 中 sysobjects 这个表记录所有的表。

syscolumns 这个表记录所有的列。

可以通过联合查询查出所有的表中的字段,然后拼SQL,进行查询。

SELECT

表名=d.name,--case when a.colorder=1 then d.name else '' end,

字段序号=a.colorder,

字段名=a.name,

标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,

主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (

SELECT name FROM sysindexes WHERE indid in(

SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid

))) then '√' else '' end,

类型=b.name,

占用字节数=a.length,

长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),

小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),

允许空=case when a.isnullable=1 then '√'else '' end,

默认值=isnull(e.text,''),

字段说明=isnull(g.[value],'')

FROM syscolumns a

left join systypes b on a.xtype=b.xusertype

inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'

left join syscomments e on a.cdefault=e.id

left join sysproperties g on a.id=g.id and a.colid=g.smallid

order by a.id,a.colorder

上面这个SQL是找到的数据库中所有表和列。

然后用游标,或其他的分析出所有的表和字段 拼接SQL然后查询吧。

这样的话,估计效率不是一般的慢。

建议还是找出具体那些字段中会存在你要查询的数据的具体表和列。然后进行查询,这样效率会快些。

上面那个2000中可以用

SQL SERVER 2005和2008存储表名和列名的表不一样,表结构也不一样

sql查询数据库中有某个值的所有表

CREATE PROCEDURE dbo.FindString

@string NVARCHAR(100)

AS

DECLARE @SQL NVARCHAR(4000);

SET @SQL = N'

DECLARE @str NVARCHAR(4000);

SELECT

@str = ISNULL(@str + N'' OR '' + c.name + N'' LIKE N''''%'

+ @string + ' %'''''',

c.name + N'' LIKE N''''%' + @string +'%'''''') FROM syscolumns AS c JOIN systypes AS t ON c.id=OBJECT_ID(''?'')

AND c.xtype=t.xtype

AND t.name IN(''varchar'',''char'',''nvarchar'',''nchar'');

SET @str = ''SELECT TOP 1 1 FROM ? WHERE ''+@str;

CREATE TABLE #tb(a int);

INSERT #tb(a) EXEC(@str);

IF EXISTS(SELECT * FROM #tb)

PRINT ''?''

';

EXEC sp_MsforeachTable @SQL;

GO

别人写的一个存储过程的例子,看看对你有没有用...

  • 本文相关:
  • sqlserver地址搜索性能优化
  • 在sql server中实现最短路径搜索的解决方法
  • sqlserver中在指定数据库的所有表的所有列中搜索给定的值
  • sql server 全文搜索功能介绍
  • sql server 2005与sql 2000之间的数据转换方法
  • sql server 管理事务和数据库介绍
  • sql查询日志 查看数据库历史查询记录的方法
  • sql server2005 异地备份的多种方法
  • sqlserver2005 xml数据操作代码
  • sql server cross apply和outer apply的应用详解
  • sql server 在management studio中使用web浏览器
  • sqlserver 2005数据库连接字符串 连接sql2005必备资料
  • sql server 2005 同步复制技术
  • sql rollup用法 小计汇总
  • 用SQL怎样查询到包含有某个字段的所有表名
  • SQLSERVER 如何查询整个数据库中某个特定值所在的表和字段
  • sql语句怎么在一个数据库中查找拥有同一字段名的所有表?
  • sqlserver如何多张表中搜索某个数据
  • sql查询数据库中有某个值的所有表
  • sql语句怎么在一个数据库中查找拥有同一字段名的所有表
  • sql server 在所有表中查询某个字段值
  • sqlserver2005查询表的某字段中包含的所有值
  • sqlserver数据库中怎样查询某个字段中含有某些字
  • 在SQLSERVER数据库表中遍历列,遍历的列的字段包含在另一个表的某列中
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved