Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从sql表中删除一组记录_Sql - Fatal编程技术网

如何从sql表中删除一组记录

如何从sql表中删除一组记录,sql,Sql,我有一个名为列的表,其中包含“arthur_01”、“arthur_02”、“arthur_03”…“arthur_10”等值以及许多其他值 有没有办法在一个查询中删除所有的“arthur\u 0x”? 我知道BETWEEN运算符取一个范围,但有没有办法使它取一半字符串为数字的范围?您需要LIKE运算符: 此解决方案对“arthur_0…”之外的数据进行了一些假设。否则,您可能需要RDBS特定的函数。您需要类似的运算符: 此解决方案对“arthur_0…”之外的数据进行了一些假设。否则,您可能需

我有一个名为列的表,其中包含“arthur_01”、“arthur_02”、“arthur_03”…“arthur_10”等值以及许多其他值

有没有办法在一个查询中删除所有的“arthur\u 0x”?
我知道BETWEEN运算符取一个范围,但有没有办法使它取一半字符串为数字的范围?

您需要LIKE运算符:


此解决方案对“arthur_0…”之外的数据进行了一些假设。否则,您可能需要RDBS特定的函数。

您需要类似的运算符:


此解决方案对“arthur_0…”之外的数据进行了一些假设。否则,您可能需要特定于RDB的功能。

有不同的方法来实现这一点,不幸的是,大多数方法都是特定于供应商的

一种方法是提取感兴趣的特征并与目标值进行比较

DELETE FROM table1
 WHERE SUBSTRING(column_name, 9, 1) = x;
或用于一系列值

DELETE FROM table1
 WHERE SUBSTRING(column_name, 9, 1) BETWEEN x AND y
这里是演示MySQL 下面是SQL Server的演示

注意:这种方法的缺点是优化器将无法使用此列上的任何索引

另一种方法是利用模式匹配,但在不同的RDBMS中实现方式不同

例如,在SQL Server中,您可以

DELETE FROM table1
 WHERE column_name LIKE 'arthur_0[345]%';
这将有效地删除列_name中值以开头的任何行 亚瑟03或亚瑟04或亚瑟05

这是演示

MySQL中的情况可能也是这样

DELETE FROM table1
 WHERE column_name RLIKE '^arthur_0[345]';

这里是演示

有不同的方法,不幸的是,大多数方法都是针对供应商的

一种方法是提取感兴趣的特征并与目标值进行比较

DELETE FROM table1
 WHERE SUBSTRING(column_name, 9, 1) = x;
或用于一系列值

DELETE FROM table1
 WHERE SUBSTRING(column_name, 9, 1) BETWEEN x AND y
这里是演示MySQL 下面是SQL Server的演示

注意:这种方法的缺点是优化器将无法使用此列上的任何索引

另一种方法是利用模式匹配,但在不同的RDBMS中实现方式不同

例如,在SQL Server中,您可以

DELETE FROM table1
 WHERE column_name LIKE 'arthur_0[345]%';
这将有效地删除列_name中值以开头的任何行 亚瑟03或亚瑟04或亚瑟05

这是演示

MySQL中的情况可能也是这样

DELETE FROM table1
 WHERE column_name RLIKE '^arthur_0[345]';

下面是演示

什么是RDBMS MySQL、SQL Server、Oracle,。。。您正在使用什么RDBMS?MySQL、SQL Server、Oracle,。。。你在用什么?