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

时间:2016-08-28 09:18:16

标签: sql-server string-length

我有一个表格和专栏[英文]我认为有一些长度为>的值50.我想将其插入到另一个表中,其中最大长度为50.

CREATE TABLE [dbo].[jlpt$] 
(
    [kanji]   NVARCHAR (255) NULL,
    [kana]    NVARCHAR (255) NULL,
    [english] NVARCHAR (255) NULL
);

如何找到这些行,还有一种方法可以将[English]的值截断为50,以便列内容适合长度为(50)的列?

1 个答案:

答案 0 :(得分:6)

要显示长度为[english]列且大于50的行:

select *
from [dbo].[jlpt$]
where len([english]) > 50

将超出长度限制的人数截断为前50个字符:

update [dbo].[jlpt$]
set keyword = left([english], 50)
where len([english]) > 50

将值插入不同的表格:

INSERT INTO [dbo].[anothertable]
  SELECT [kanji], [kana], left([english], 50)
  FROM [dbo].[jlpt$]

来自手册

  

LEFT返回具有指定字符数的字符串的左侧部分。

     

LEN返回指定字符串表达式的字符数,不包括尾随空格。

如果您的列包含尾随空白,请改用DATALENGTH函数。

如果您不关心检查和使用尾随空格,只需发出INSERT INTO ... SELECT即可完成所有操作。