Dev*_*ave 1 sql-server nvarchar alter
我一直在更改数据库,并创建一个脚本,以便它可以在原始数据库上运行,以继承我所做的所有更改.
我需要改变NVARCHAR的长度,但是在改变列之前要检查它的长度.我对语法有点挣扎,任何人都可以帮我解决这个问题吗?
SELECT LEN(colName) AS MyLength FROM tblName
IF MyLength = 60
BEGIN
ALTER TABLE tblName
ALTER COLUMN colName nvarchar(140) NOT NULL
END
GO
Run Code Online (Sandbox Code Playgroud)
如果我尝试在SQL Server Management Studio中运行此查询,则会收到一条错误消息:
列名称"MyLength"无效.
试试这个:
IF (select max(LEN(colName)) from tblName) = 60
BEGIN
ALTER TABLE tblName
ALTER COLUMN colName nvarchar(140) NOT NULL
END
GO
Run Code Online (Sandbox Code Playgroud)
继 Podiluska 的回答之后,您正在寻找的完整命令是:
IF (SELECT [CHARACTER_MAXIMUM_LENGTH] FROM INFORMATION_SCHEMA.COLUMNS WHERE [COLUMN_NAME] = 'ColumnName' AND [TABLE_NAME] = 'TableName') < 140
BEGIN
ALTER TABLE [dbo].[TableName] ALTER COLUMN [ColumnName] NVARCHAR(140) NOT NULL
END
Run Code Online (Sandbox Code Playgroud)
重申一下,使用MAX(LEN())只会给出列中最长字符串的长度,而不是允许的最大长度!
| 归档时间: |
|
| 查看次数: |
6552 次 |
| 最近记录: |