gpt4 book ai didi

sql-server - T-SQL : Is the variable NVARCHAR(MAX)?

转载 作者:行者123 更新时间:2023-12-03 12:44:01 26 4
gpt4 key购买 nike

如何在 t-sql 中获取列或变量的实际类型?

我知道 SQL_VARIANT_PROPERTY,但是对于 NVARCHAR(MAX) 来说,这失败得很惨:

DECLARE @foo1 NVARCHAR(10) = N'a'
SELECT SQL_VARIANT_PROPERTY(@foo1, 'BaseType') --works fine
DECLARE @foo2 NVARCHAR(MAX) = N'a'
SELECT SQL_VARIANT_PROPERTY(@foo2, 'BaseType') --fails with an error:
--Operand type clash: nvarchar(max) is incompatible with sql_variant

还有什么可以告诉我变量是否包含 NVARCHAR(MAX) 类型的值?

一些背景:

我正在研究一个应该对表的列进行重新排序的过程:重命名旧表,创建一个新表,复制数据并删除旧表。为此,需要在新表上重新创建所有索引、 View 、约束等。

我想确保在此自动过程中不会丢失任何内容。为此,我想将大部分值从相关系统表复制到通用临时表,并在重新排序后比较这些值。这现在工作得很好,但在尝试检测 nvarchar(max)-columns 的类型时失败。

最佳答案

安德烈亚斯

如果您希望发现列的数据类型和长度,则可以使用以下代码。请注意,在模式中指定 (max) 的地方使用 -1。添加WHERE子句指定表名或列名

SELECT      tb.name TableName, cl.name ColumnName
, cl.system_type_id, ty.name, cl.max_length
FROM sys.columns cl
INNER JOIN sys.tables tb ON tb.object_id = cl.object_id
INNER JOIN sys.types ty ON cl.system_type_id = ty.system_type_id
ORDER BY cl.max_length

关于sql-server - T-SQL : Is the variable NVARCHAR(MAX)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387787/

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