首页 > 解决方案 > 删除字符串值出现在另一个更大的行值中的行

问题描述

我试图通过删除出现在其他较大值中的值来缩小表格。例如

     Column
Row1 potato234
Row2 to2
Row3 ot
Row4 potatos

我想要的结果是从表中删除第 2 行和第 3 行,因为它们都出现在比它们大的另一行内。

我试图为它编写代码,但无法在 DELETE 语句中使用内部联接,如果没有子查询返回多个元素,我不知道该怎么做。

DELETE FROM dbo.ENTRY_VALUES
WHERE LENGTH(ENTRIES) < (SELECT LENGTH(ENTRIES) FROM dbo.ENTRY_VALUES)
AND ENTRIES LIKE ('%' || (SELECT ENTRIES FROM dbo.ENTRY_VALUES) || '%')

标签: sqlteradatateradata-sql-assistant

解决方案


您应该能够使用:

delete from entry_values
   where exists (select 1
                 from entry_values ev2
                 where ev2.entry like '%' || entry_values.entry || '%' and
                       ev2.entry <> entry_values.entry
                );

推荐阅读