【问题标题】:How to delete rows which contain less than 75 characters (about 10 words) in a particular column如何删除特定列中包含少于 75 个字符(约 10 个单词)的行
【发布时间】:2014-09-24 09:55:02
【问题描述】:

SQL Server 2008 - 我有一个包含 10 列和许多行的表,我想删除其中的所有行,例如删除所有行,特别是那些小于 75 个字符(约 10 个字)的特定列

【问题讨论】:

  • 你为什么不能做一个简单的 DELETE FROM tablename where len(columname)

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


【解决方案1】:

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

在您的情况下,只需在删除命令中的 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

【讨论】:

  • 它适用于常规字段,但不适用于“ntext”数据类型字段,请告知。谢谢
  • 建议您远离ntext:见此处:stackoverflow.com/questions/17738662/…
  • 不能从“ntext”改变,没有权限也不能改变权限,知道吗?
  • 我认为这个链接会对你有所帮助....你最终应该考虑将 ntexttext 更改为 varchar(max) 但现在有一个解决方案:mssqltips.com/sqlservertip/1188/…
  • 我已经更新了答案,以防其他人遇到同样的问题。
【解决方案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 替换您的数据所在的表名

【讨论】:

  • @logixologist - 是的,你是绝对正确的,而且做得也很简单......后悔我的回答方式......因为我刚从几天前开始学习 CTE,我的想法就是这样方式…………
  • 编程中有句谚语:给猫剥皮的方法有很多种……如果你得到了正确的结果,那么答案就是正确的。我还没有玩过 CTE 的 ;)
【解决方案3】:

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

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

【讨论】:

  • 谢谢,由于我不是程序员,如果你能写下整个代码以便我复制和粘贴,我将不胜感激。再次感谢。
  • 复制粘贴 Lollllzlzzzz 我会给你我的银行账号,请转出工作小时数.. ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 2019-10-05
相关资源
最近更新 更多