表中太多列,只想查找某些比如,数据类型为varchar的字段的数据。

  思路:1、先获取列名:

select * from syscolumns 
where id=(select max(id) from sysobjects where xtype='u' and name='test_A')

  SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据

  2、查找指定数据类型,xtype就是数据类型,参考如下

syscolumns表内的xtype

  查了一下,这些东西都是存于每一个数据库的syscolumns表里面得,name就是列名,xtype就是数据类型,但是这个xtype是数字的,下面是数字和数据类型对应的关系;

 xtype=34 'image' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype= 35 'text' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=36 'uniqueidentifier' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=48 'tinyint' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=52 'smallint' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=56 'int' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=58 'smalldatetime' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=59 'real' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=60 'money' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=61 'datetime' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=62 'float' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=98 'sql_variant' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=99 'ntext' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=104 'bit' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=106 'decimal' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=108 'numeric' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=122 'smallmoney' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=127 'bigint' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=165 'varbinary' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=167 'varchar'

SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=173 'binary' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=175 'char' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=189 'timestamp' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=231 'nvarchar'

SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=239 'nchar' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=241 'xml' 
SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据 xtype=231 'sysname'

3、构造最终的动态SQL语句:

DECLARE @sql VARCHAR(max)
DECLARE @col VARCHAR(1000)

SELECT @col = STUFF((SELECT ','+name FROM syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='test_A')
AND sys.syscolumns.xtype= 167 for xml path('')),1,1,'')

SET @sql='select '+@col
SET @sql=@sql+' from test_A'
EXEC(@sql)

 

相关文章:

  • 2021-09-24
  • 2022-12-23
  • 2022-12-23
  • 2022-02-20
  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
猜你喜欢
  • 2021-05-17
  • 2022-12-23
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案