zoukankan      html  css  js  c++  java
  • 经典SQL

     获取数据库中包含指定列的 表

    select   object_name(id)  ,Name as colName
    from syscolumns
    where (name ='列名')
    and id in(select id from sysobjects where xtype='u')
    order by object_name(id)

    sql - 查询所有表中包含指定值

    可以直接创建sql语句:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    CREATE TABLE qResults (tName nvarchar(370), cname nvarchar(3630),[countint)
     
    declare @tname nvarchar(200)
    declare @cname nvarchar(200)
     
    declare @countOut nvarchar(200)
    declare @sql nvarchar(max)
    declare c_search cursor for
    select t.name,c.name from sysobjects t inner join syscolumns c on t.id=c.id where t.type='u'  and c.xtype in(56,167,175,231,239) order by t.name --xtype 这个地方限制类型为int varchar char nvarchar nchar 五种类型
    open c_search
    fetch next from c_search into @tname,@cname
    while @@FETCH_STATUS=0
    begin
       
       set @sql=N'select @countx=COUNT(*) from '+@tname +' where [' +@cname +'] =''44'' '
       
       print @sql
       EXECUTE sp_executesql @sql,N'@countx nvarchar(200) out ', @countx=@countOUT OUT
     
       insert into qResults values (@tname,@cname,@countOUT)
     
       
       fetch next from c_search into @tname,@cname
    end
    select tName 'Table',cname 'Field' from qResults where [count]>0 order by tname
    close c_search
    deallocate c_search
     
    drop table qResults

     或者先创建存储过程:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    ALTER proc Full_Search(@string varchar(50))  
    as  
    begin  
      
    declare @tbname varchar(50)  
    declare tbroy cursor for select name from sysobjects  
    where xtype= 'u' --第一个游标遍历所有的表  
      
    open tbroy  
    fetch next from tbroy into @tbname  
    while @@fetch_status=0  
    begin  
      
    declare @colname varchar(50)  
    declare colroy cursor for select name from syscolumns  
    where id=object_id(@tbname) and xtype in (  
    select xtype from systypes  
    where name in 'varchar ''nvarchar ''char ''nchar '--数据类型为字符型的字段  
    --第二个游标是第一个游标的嵌套游标,遍历某个表的所有字段  
      
    open colroy  
    fetch next from colroy into @colname  
    while @@fetch_status=0  
    begin  
      
    declare @sql nvarchar(1000),@j int  
    select @sql= 'select @i=count(1) from ' +@tbname + ' where '+ @colname+ ' like ''''%'+@string+ '%'''  
    exec sp_executesql @sql,N'@i int output',@i=@j output --输出满足条件表的记录数  
    if @j> 0  
    BEGIN 
    select 包含字串的表名=@tbname 
    --exec( 'select distinct '+@colname+' from ' +@tbname + ' where '+ @colname+ ' like '+ '''%'+@string+ '%''')  
    END 
    fetch next from colroy into @colname  
    end  
      
    close colroy  
    deallocate colroy  
      
    fetch next from tbroy into @tbname  
    end  
    close tbroy  
    deallocate tbroy  
    end  
       

     然后execute,输入指定值即可.


    --快速查看表结构(比较全面的)
    SELECT CASE WHEN col.colorder = 1 THEN obj.name
    ELSE ''
    END AS 表名,
    col.colorder AS 序号 ,
    col.name AS 列名 ,
    ISNULL(ep.[value], '') AS 列说明 ,
    t.name AS 数据类型 ,
    col.length AS 长度 ,
    ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数 ,
    CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'
    ELSE ''
    END AS 标识 ,
    CASE WHEN EXISTS ( SELECT 1
    FROM dbo.sysindexes si
    INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id
    AND si.indid = sik.indid
    INNER JOIN dbo.syscolumns sc ON sc.id = sik.id
    AND sc.colid = sik.colid
    INNER JOIN dbo.sysobjects so ON so.name = si.name
    AND so.xtype = 'PK'
    WHERE sc.id = col.id
    AND sc.colid = col.colid ) THEN '√'
    ELSE ''
    END AS 主键 ,
    CASE WHEN col.isnullable = 1 THEN '√'
    ELSE ''
    END AS 允许空 ,
    ISNULL(comm.text, '') AS 默认值
    FROM dbo.syscolumns col
    LEFT JOIN dbo.systypes t ON col.xtype = t.xusertype
    inner JOIN dbo.sysobjects obj ON col.id = obj.id
    AND obj.xtype = 'U'
    AND obj.status >= 0
    LEFT JOIN dbo.syscomments comm ON col.cdefault = comm.id
    LEFT JOIN sys.extended_properties ep ON col.id = ep.major_id
    AND col.colid = ep.minor_id
    AND ep.name = 'MS_Description'
    LEFT JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id
    AND epTwo.minor_id = 0
    AND epTwo.name = 'MS_Description'
    WHERE obj.name = 'AutoBillGetAndReturnBack'--表名
    ORDER BY col.colorder ;

  • 相关阅读:
    mybatis 自定义插件的使用
    mybatis的TypeHandler 的使用
    css水平居中的各种方法
    ASP.Net MVC——DotNetZip简单使用,解决文件压缩问题。
    TinyMCE的使用(包括汉化及本地图片上传功能)
    ASP.Net MVC——使用 ITextSharp 完美解决HTML转PDF(中文也可以)
    关于项目中值对象Identifier的设计-领域驱动
    B/S工作原理
    大学期间项目笔记
    C#反射机制
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/14422405.html
Copyright © 2011-2022 走看看