0

我需要将数据库中数据类型为 char(255) 的所有列的数据类型更改为 nvarchar(255)。为此,我需要删除 P/F 键,然后重新创建它们。但是在数据类型更改时,我会丢失非空信息。

有些列可能是空的,有些则不是。这就是问题。

我该如何解决?

编辑:

当我放下 P/F 键时,我尝试成功更改数据类型。然后,在重新创建键时,它说不能在该字段上设置键,因为它可以为空。

然后我尝试用 try/catch 来做:

尝试添加键,如果没有,将数据类型更改为不为空,然后再次尝试添加键。

它可以工作,但现在会引发大量异常。我认为这项工作已经完成,但我不确定,因为我的数据库有大约 100 个表,如果它们都可以,则无法检查它们。

那么这里有其他方法可以做到这一点吗?

4

1 回答 1

1

您可以使用 INFORMATION_SCHEMA.COLUMNS 视图查找所有 char(255) 列。该视图还包含有关该列的其他信息,例如它属于哪个表以及它是否允许为空。

例如...

select TABLE_NAME, COLUMN_NAME, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
from INFORMATION_SCHEMA.COLUMNS
Where DATA_TYPE = 'char'
And CHARACTER_MAXIMUM_LENGTH = 255

您可以使用该信息来确定需要修改哪些列,并且您知道它是否允许为空。

于 2014-05-01T15:10:03.413 回答