gpt4 book ai didi

sql - unpivoting 列时出现类型转换错误,为什么?

转载 作者:行者123 更新时间:2023-12-04 21:35:47 29 4
gpt4 key购买 nike

我正在尝试对 mdsb.sys.database 表中的某些列进行 UNPIVOT,但在处理某些列时遇到了一些问题。我试图在 UNPIVOTing 表之前在 CTE 中将所有列转换为 NVARCHAR(128),但它仍然不起作用。有人可以解释为什么以及如何解决这个问题吗?

;
WITH props AS (
SELECT
[name]
,CAST([collation_name] AS NVARCHAR(128)) AS [collation_name]
,CAST([is_auto_close_on] AS NVARCHAR(128)) AS [is_auto_close_on]
,CAST([is_auto_shrink_on] AS NVARCHAR(128)) AS [is_auto_shrink_on]
,CAST([is_auto_create_stats_on] AS NVARCHAR(128)) AS [is_auto_create_stats_on]
,CAST([is_auto_update_stats_async_on] AS NVARCHAR(128)) AS [is_auto_update_stats_async_on]
,CAST([is_auto_update_stats_on] AS NVARCHAR(128)) AS [is_auto_update_stats_on]
,CAST(CASE WHEN [is_parameterization_forced] = 0 THEN N'SIMPLE' ELSE N'FORCED' END AS NVARCHAR(128)) AS [is_parameterization_forced]
,CAST([is_trustworthy_on] AS NVARCHAR(128)) AS [is_trustworthy_on]
,CAST([compatibility_level] AS NVARCHAR(128)) AS [compatibility_level]
,CAST([page_verify_option_desc] AS NVARCHAR(128)) AS [page_verify_option_desc]
FROM sys.databases s
WHERE [name] = DB_NAME()
)
SELECT [name]
,[property]
,[value]
FROM [props]
UNPIVOT
(
[value]
FOR [property] IN ([collation_name]
,[is_auto_close_on]
,[is_auto_shrink_on]
,[is_auto_create_stats_on]
,[is_auto_update_stats_async_on]
,[is_auto_update_stats_on]
,[is_parameterization_forced]
,[is_trustworthy_on]
,[compatibility_level]
,[page_verify_option_desc]
)
) AS u

错误:

Msg 8167, Level 16, State 1, Line 34
The type of column "page_verify_option_desc" conflicts with the type of other columns specified in the UNPIVOT list.

结果应该看起来像这样,但带有“page_verify_option_desc”行和“recovery_model_desc”。

name    property    value
master collation_name SQL_Latin1_General_CP1_CI_AS
master is_auto_close_on 0
master is_auto_shrink_on 0
master is_auto_create_stats_on 1
master is_auto_update_stats_async_on 0
master is_auto_update_stats_on 1
master is_parameterization_forced SIMPLE
master is_trustworthy_on 0
master compatibility_level 110

最佳答案

我觉得其实是排序问题

这样试试

  ;
WITH props AS (
SELECT
[name]
,CAST([collation_name] AS NVARCHAR(128)) AS [collation_name]
,CAST([is_auto_close_on] AS NVARCHAR(128)) AS [is_auto_close_on]
,CAST([is_auto_shrink_on] AS NVARCHAR(128)) AS [is_auto_shrink_on]
,CAST([is_auto_create_stats_on] AS NVARCHAR(128)) AS [is_auto_create_stats_on]
,CAST([is_auto_update_stats_async_on] AS NVARCHAR(128)) AS [is_auto_update_stats_async_on]
,CAST([is_auto_update_stats_on] AS NVARCHAR(128)) AS [is_auto_update_stats_on]
,CAST(CASE WHEN [is_parameterization_forced] = 0 THEN N'SIMPLE' ELSE N'FORCED' END AS NVARCHAR(128)) AS [is_parameterization_forced]
,CAST([is_trustworthy_on] AS NVARCHAR(128)) AS [is_trustworthy_on]
,CAST([compatibility_level] AS NVARCHAR(128)) AS [compatibility_level]
,CAST([page_verify_option_desc] collate database_default AS NVARCHAR(128)) AS [page_verify_option_desc]
FROM sys.databases s
WHERE [name] = DB_NAME()
)
SELECT [name]
,[property]
,[value]
FROM [props]
UNPIVOT
(
[value]
FOR [property] IN ([collation_name]
,[is_auto_close_on]
,[is_auto_shrink_on]
,[is_auto_create_stats_on]
,[is_auto_update_stats_async_on]
,[is_auto_update_stats_on]
,[is_parameterization_forced]
,[is_trustworthy_on]
,[compatibility_level]
,[page_verify_option_desc]
)
) AS u

关于sql - unpivoting 列时出现类型转换错误,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21279354/

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