gpt4 book ai didi

.net - 在 Sql Server 中查找列的默认值的最佳方法

转载 作者:行者123 更新时间:2023-12-02 15:10:07 24 4
gpt4 key购买 nike

我想在 SQL2005 数据库中查找列的默认值。我只有 SQL Server 连接字符串,所以我只能使用 Sql 库命名空间(不能使用 Oledb GetSchema 的东西)。我知道有一个 GetSchema()...但是如何使用它来获取列模式,从而获取默认值?我无法在数据表上 fillSchema,因为这似乎没有填充默认值属性。我可以使用“exec sp_columns 'ADDRESS_MASTER'”并返回默认值,但它们不是干净的格式......例如,我的文本列默认值之一返回为“(N'test)”。

我也想获取列大小... sp_columns 似乎给了我一切...但我不知道如何在所有情况下解码默认值?

最佳答案

这里的问题是默认值是一个表达式,并且您似乎希望它只返回一个值,例如“bob”或 5。

当您使用 GetDate() 或调用自定义函数(例如 dbo.MyFunc())时,这几乎就会失败。此时它应该返回什么作为默认值?

因此,sql server 可以做的唯一可靠的事情就是返回它将用于生成默认值的表达式,您可以通过 sql server 再次运行它来确定结果,即:

DECLARE @def nvarchar(max)

SELECT @def = column_def FROM information_schema.columns
WHERE table_name = 'ADDRESS' AND column_name = 'ADDRESS_MASTER'

EXEC ('SELECT ' + @def)

当然,如果表达式不是常量(例如 GetDate 的情况),那么在您插入实际数据时,这将是不正确的。如果使用具有副作用的自定义函数也会导致问题,但默认情况下使用具有副作用的自定义函数我已经考虑了一个问题。

关于.net - 在 Sql Server 中查找列的默认值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1242447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com