【问题标题】:How to find the number NULL records in foreign key column in SQL Server?如何在 SQL Server 的外键列中查找 NULL 记录数?
【发布时间】:2013-12-30 09:14:19
【问题描述】:

我想动态查找表的外键列中存在的NULLs 的数量。

我的场景是这样的:

我需要编写一个以表名作为参数的存储过程。在给出表名时,如果表有任何外键列,结果应该给我外键列中NULLs 的数量,或者给出一条消息说“没有外键”。我发现还需要其他输出。我只是无法在外键列中获得NULLs 的编号。

【问题讨论】:

    标签: sql-server stored-procedures count null foreign-keys


    【解决方案1】:

    您可以像这个示例一样找到您的外键:

    SELECT
        f.name AS ForeignKey,
        OBJECT_NAME(f.parent_object_id) AS TableName,
        COL_NAME(fc.parent_object_id,
        fc.parent_column_id) AS ColumnName,
        OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
        COL_NAME(fc.referenced_object_id,
        fc.referenced_column_id) AS ReferenceColumnName
    FROM
        sys.foreign_keys AS f
    INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
    

    然后就可以了。你有外键。因此,根据需要更改代码。我希望这会对你有所帮助。

    要获取外键约束的名称,请使用:

    select distinct name from sys.objects where object_id in
        (select fk.constraint_object_id from sys.foreign_key_columns as fk
            where fk.referenced_object_id =
            (select object_id from sys.tables where name = 'TableOthersForeignKeyInto')
        )
    

    【讨论】:

    • 感谢 Pouya Samie。我会试试这个,看看能不能得到什么。虽然我有不同的代码来找出外键名称,但无法获得 NULL 记录的计数。让我试试这个,看看效果如何。
    猜你喜欢
    • 1970-01-01
    • 2010-10-29
    • 2021-01-05
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多