sql server 中有系统表记录所有的表名,那么,写一个简单的sql语句就可以了,用like

解决方案 »

  1.   

    这SQL可不简单哦,使用sysobjects表中的内容取到表名
    再用syscolumns表中的内容取到列名,再组织sql脚本,数据库一定会被累死。
      

  2.   

    要求的歧义性太大了吧:查表名中有“XXX”的表名称呢?
    还是查字端值中有“XXX”的表名称呢?
    如果是前者,可以:
    1‘XXX’很规范时,从sysobjects选取即可
    2‘XXX’不规范时,可以建张表,专门存放表名称,从中取数据。
    如果是后者,呵呵,用neosu(neo)的方法吧。
      

  3.   

    使我表达的不清楚,应该查字端值中有“XXX”的表名称。
    我就觉得不太可能,可是老板说是小CASE.头大了!!!neosu(neo)的方法理论上是可行的,但是实际上—————,
    请问各位大侠,有没有现成的工具,可以实现上述功能???谢谢了!
      

  4.   

    >halcyony(bb) 
    >请问各位大侠,有没有现成的工具,可以实现上述功能???SQL SERVER的全文检索有没有试过?
      

  5.   

    可以做
    select    distinct      table_name, column_name, data_type into #T1
    from            information_schema.columns, sysobjects
    where  data_type like '%char' or data_type like'%text' 
    and information_schema.columns.table_name = sysobjects.name
    and sysobjects.xtype = 'u'
    order by table_name, column_name
    再用游标从#T1中读出表名何列名,分别从表中读取,估计这样一定慢的受不了
      

  6.   

    我理解成为:
    1、从sysobjects中取出所有库表的表名和ID
    2、根据ID从syscolumns中取出与该表相关所有的字段名
    3、根据表名和字段名组建一个sql
    4、这肯定慢得要命,:)
      

  7.   

    我怎么觉得你的意思是取得数据表中含有xxx字符的表名呀,这样能实现您的要求吗?
    select name from sysobjects where objectproperty(id,'IsUserTable') = 1 and name like '%xxx%'