如何删除特定列中包含少于75个字符(大约10个单词)的行

时间:2014-09-24 09:55:03

标签: sql database sql-server-2008 sql-delete

SQL Server 2008 - 我有一个包含10列和多行的表,其中我要删除条件,例如删除所有行,特别是列小于75个字符(大约10个单词)

3 个答案:

答案 0 :(得分:2)

正如@ogixologist所说......

DELETE  FROM  table_name  where  len (column_name) < 75

在这里,我通过使用CTE检查出来!!!!!!!!!

;with cte 
as
(       
    SELECT  column_name, temp = LEN ( CAST ( column_name As nvarchar(4000) ) ) from table_name
)
delete from cte where temp<=75;
  • 您可以在找到长度之前转换为nvarchar,或者只使用Len(column_name)
  • 而不是column_name替换您想要的nvarchar列名称
  • 而不是table_name替换数据所在的表名

答案 1 :(得分:2)

最简单的解决方案是使用名为len的SQL函数,如下所示:len(nameOffield)

在您的情况下,只需将函数添加到delete命令中的where子句,如下所示:

DELETE FROM yourTableName where len(aParticularColumn) < 75

更新回答:如果aParticularColumn的数据类型为textntext,则可以使用DATALENGTH而不是len。在这种情况下,它将是

DELETE FROM yourTableName where DATALENGTH(aParticularColumn) < 75

Microsoft Documentation to the DATALENGTH function

答案 2 :(得分:0)

要实现这一目标,您可以使用以下方法 - 请按照上述步骤进行操作

  1. 创建temp tableMAIN TABLEInsert相同的temp table中的所有记录     You can use INSERT INTO SELECT Statement实现第一步
  2. 插入时会提到列名和值 - 使用CAST(varchar(75), [columnname])会截断超过75个字符的数据。
  3. 然后您可以truncate主表和inserttemp table到主表的所有记录。