我有一个表和列[英语]我认为有一些长度> 50的值.我想将其插入到另一个表中,其中最大长度为50.
CREATE TABLE [dbo].[jlpt$]
(
[kanji] NVARCHAR (255) NULL,
[kana] NVARCHAR (255) NULL,
[english] NVARCHAR (255) NULL
);
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到这些行,还有一种方法可以将值截断[English]为50,以便列内容适合长度为(50)的列?
要显示列长度[english]大于50的行:
select *
from [dbo].[jlpt$]
where len([english]) > 50
Run Code Online (Sandbox Code Playgroud)
要将超过长度限制的那些截断为前50个字符:
update [dbo].[jlpt$]
set keyword = left([english], 50)
where len([english]) > 50
Run Code Online (Sandbox Code Playgroud)
要将值插入到不同的表中:
INSERT INTO [dbo].[anothertable]
SELECT [kanji], [kana], left([english], 50)
FROM [dbo].[jlpt$]
Run Code Online (Sandbox Code Playgroud)
从手册
LEFT返回具有指定字符数的字符串的左侧部分.
LEN返回指定字符串表达式的字符数,不包括尾随空格.
如果列包含尾随空格,请改用DATALENGTH函数.
如果您不关心检查和使用尾随空格,只需发出问题INSERT INTO ... SELECT并完成所有操作.