求高手指教

QQ308944476 2013-08-28 07:17:04
我想模糊匹配 字段。 例如 like一个 test 字段。把当前数据库所有包含test这个字段的所有表都列出来。




求高手指教
...全文
875 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sytwz 2014-05-29
  • 打赏
  • 举报
回复
select name from syscolumns where name like '%test%'
LongRui888 2013-10-27
  • 打赏
  • 举报
回复
下面的代码,能查找出所有包含test字段的表:


--适用于sql server 2005及以后的版本
SELECT DISTINCT t.name
FROM sys.tables t
INNER JOIN sys.columns c
        ON t.object_id = c.object_id
WHERE c.name LIKE 'test%'
      AND t.type = 'U'


--适用于sql server 2000
SELECT DISTINCT t.name
FROM sysobjects t
INNER JOIN syscolumns c
        ON t.id = c.id
WHERE c.name LIKE 'test%'
      AND t.xtype = 'U'
Shawn 2013-10-25
  • 打赏
  • 举报
回复
引用 5 楼 t101lian 的回复:
学习啦, 不过为什么我查到的全是系统的数据库表呢,
#1.查询前,用USE DATABASENAME 先切换到你要查找的数据库下。 #2.或者在SQL中加数据库限定.比如 db_csdn.sys.columns & db_csdn.sys.tables
t101lian 2013-10-24
  • 打赏
  • 举报
回复
引用 3 楼 wwwwgou 的回复:
SELECT tablename = a.NAME, fieldname=MIN(b.NAME)
FROM sys.tables a
	INNER JOIN sys.columns b
		ON a.object_id = b.object_id
WHERE b.name LIKE '%test%'
GROUP BY a.name
学习啦, 不过为什么我查到的全是系统的数据库表呢,
---涛声依旧--- 2013-08-29
  • 打赏
  • 举报
回复
sql2000、2005用sysobjects sql2008以上用sys.objects
Shawn 2013-08-28
  • 打赏
  • 举报
回复
SELECT tablename = a.NAME, fieldname=MIN(b.NAME)
FROM sys.tables a
	INNER JOIN sys.columns b
		ON a.object_id = b.object_id
WHERE b.name LIKE '%test%'
GROUP BY a.name
Andy__Huang 2013-08-28
  • 打赏
  • 举报
回复

select 'select * from '+b.name+ ' where '+a.name+' like ''%XXXX%'''
from syscolumns a
inner join sysobjects b on a.id=b.id
where b.xtype='U' and a.name='test'   -->具体到字段用等号

Andy__Huang 2013-08-28
  • 打赏
  • 举报
回复
select b.name as 表名,a.name as 字段名 
from syscolumns a
inner join sysobjects b on a.id=b.id
where b.xtype='U' and a.name like '%test%'

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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