sql-server - 如何删除一行,其中我的一个字符串在另一个字符串内
问题描述
我有这个问题,我正在 sql server 中建立一个节点链,但是我的一些链已经包含在其他链中:
ChainsOfNodes
1-2363
1-2363-4665
1-2363-4665-2359
例如链1-2363
包含在链中1-2363-4665
。我想删除该行,因为它已经包含在另一个链中。
有没有一种简单的方法可以使用删除语句删除这些行?
我正在使用游标,但性能真的很差。
提前致谢 !
解决方案
我想你正在寻找
CREATE TABLE T
([ChainsOfNodes] varchar(16));
INSERT INTO T
([ChainsOfNodes])
VALUES
('1-2363'),
('1-2363-4665'),
('1-2363-4665-2359');
DELETE T1
FROM T T1 JOIN T T2 ON T2.ChainsOfNodes LIKE '%'+T1.ChainsOfNodes+'%'
WHERE T1.ChainsOfNodes <> T2.ChainsOfNodes;
SELECT *
FROM T;
回报:
+------------------+
| ChainsOfNodes |
+------------------+
| 1-2363-4665-2359 |
+------------------+
这是一个演示,您可以在其中进行测试。
推荐阅读
- php - PHP 正则表达式匹配并在每个匹配中包含组(完全匹配)
- sql - 生成序列号
- sql - SQL/Postgresql:根据表中的所有列查找重复项
- octave - 评估参数列表元素编号 1
- python-3.x - 请让我知道我在这个 python 代码中做错了什么?
- flutter - 上传图像颤动时如何显示小部件(加载 20%、30%)
- jquery - 如何使用 jQuery 在按钮中放置图像或图标
- chart.js - 如何在 Chart.js 中向 x 轴刻度值添加一些水平填充?
- react-native - 如何修复反应本机console.log内存泄漏
- r - 通过组合因素从数据框创建子集