【问题标题】:How to test for existence of a specific set of fields in a table如何测试表中是否存在特定字段集
【发布时间】:2015-02-05 16:52:17
【问题描述】:

我希望能够测试一个表是否有一组特定的字段(我只满足于名称比较;当然,类型/长度/等可能已更改)。我看到测试单个字段是否存在并不难,但我正在处理的表有大约 80 个字段,我希望不必逐个检查。

这里的主要目标是在代码中执行健全性检查,以确认表没有被更改,因此在复制记录时不会遗漏任何字段。

【问题讨论】:

标签: sql sql-server tsql field


【解决方案1】:

我相信您的查询应该是

SELECT count(*)
 FROM DatabaseName.INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME = N'TableName' and COLUMN_NAME='YourColumnName'

如果 count>0 则存在

【讨论】:

  • 我认为应该这样做,加上一些小模组。我将 COLUMN_NAME='YourColumnName' 更改为 COLUMN_NAME IN (...) 以获取所有列,测试最终结果是否确实等于该数字,并测试表中的绝对列数。
【解决方案2】:
if
(SELECT ORDINAL_POSITION 
FROM information_schema.columns
WHERE TABLE_CATALOG='your_db' 
AND 
TABLE_NAME='YOUR_TABLE' 
AND 
COLUMN_NAME='COLUMN_NAME')>0
..

【讨论】:

    猜你喜欢
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多