gpt4 book ai didi

sql - 如何在 SQL 查询中轻松地将所有 ntext 字段转换为 nvarchar(max)?

转载 作者:行者123 更新时间:2023-12-04 23:33:45 27 4
gpt4 key购买 nike

我希望能够编写一个 SQL 查询,而无需枚举列,这将返回所有列,以及任何转换为​​ varchar(max) 的 ntext 列。我想知道是否有一个聪明的方法来做到这一点。

这会很棒,因为这样我就可以对此类查询执行基于比较的运算符,例如 UNION、EXCEPT 等。 netxt 列不可比较,因此在使用这些运算符时会失败。

我目前的想法:

创建一个函数以将查询构建为动态 sql。类似的东西:http://lotsacode.wordpress.com/2010/03/23/sql-server-ntext-cannot-be-selected-as-distinct/

有没有更好的办法?

感谢您的意见!

最佳答案

NTEXT 无论如何都会从 SQl-Server 的 future 版本中删除 ( along with Image and text ),所以为什么不硬着头皮将列更改为 NVARCHAR(MAX)?一次可能很昂贵,但可能值得:

ALTER TABLE dbo.T ALTER COLUMN NTextColumn NVARCHAR(MAX) NULL; -- OR NOT NULL

您可以使用以下命令为整个数据库生成和执行脚本:

DECLARE @SQL NVARCHAR(MAX) = 
( SELECT 'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' +
QUOTENAME(OBJECT_NAME(object_id)) +
' ALTER COLUMN ' + QUOTENAME(Name) +
' NVARCHAR(MAX) ' +
CASE WHEN is_nullable = 0 THEN 'NOT' ELSE '' END +
' NULL;' + CHAR(13) + 'GO' + CHAR(13)
FROM sys.columns
WHERE system_type_id = 99 --NTEXT
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)');

EXECUTE sp_executesql @SQL;

关于sql - 如何在 SQL 查询中轻松地将所有 ntext 字段转换为 nvarchar(max)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18789810/

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