如何找出表格中哪些行的长度> 50的列?

0 sql-server string-length

我有一个表和列[英语]我认为有一些长度> 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)的列?

Kam*_*ski 6

要显示列长度[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并完成所有操作.