sql - 如何从 SQL DB 中找到列最大长度为 256 的表?
问题描述
我需要更新 maxlength 为 256 的某些表的列,那么有什么简单的方法可以找到 sql 表吗?
解决方案
尝试这个:
SELECT DISTINCT OBJECT_NAME([object_id])
FROM sys.columns C
INNER JOIN sys.types T
ON c.[system_type_id] = T.[system_type_id]
WHERE T.[name] IN ('VARCHAR', 'CHAR', 'NVARCHAR', 'NCHAR')
AND C.[max_length] = 256;
要将所有列从 更新NVARCHAR(128)
为 的图像NVARCHAR(256)
。您可以使用以下脚本:
SELECT 'ALTER TABLE [' + SCHEMA_NAME(T.[schema_id]) + '].[' + OBJECT_NAME(T.[object_id]) + '] ALTER COLUMN [' + C.[name] + '] NVARCHAR(512);'
FROM sys.tables T
INNER JOIN sys.columns C
ON T.[object_id] = C.[object_id]
INNER JOIN sys.types TY
ON c.[system_type_id] = TY.[system_type_id]
WHERE TY.[name] = 'NVARCHAR'
AND C.[max_length] = 512;
请注意,如果该列是索引的一部分,则应首先将其删除。然后,更改类型并重新创建索引。
另外,请注意,max_length
是字节的长度。所以,对于VARCHAR(128)
它128
,但对于NVARCHAR
它是加倍的。
推荐阅读
- python-3.x - Pandas 系列字符串比较
- javascript - Angular 8 Pdfmake 包导致属性“内容”的类型不兼容
- angular - [已解决]无法从数据数组中获取数据。问题是什么?
- c++ - '__min_lv_minval' 有意义吗?
- selenium - 未解决的问题:WebDriver 无法解析为类型 ChromeDriver 无法解析为类型
- vue.js - Vue.js 什么时候观察者开始触发?
- azure - Azure B2C - REST API 调用错误“消息:声明交换
步骤中指定 返回了无法解析的 HTTP 错误响应” - java - 如何以其他形式显示 Java NetBeans 的结果?
- keras - 以下代码在 jupyter notebook 中使用时显示错误
- xero-api - 如何在 Xero 中导出所有 PDF 发票