2017-02-13 89 views
1

如何删除行,如果前4个字符包含一个空格,需要以上的空间看到的例子mysql的删除前4个字符,空间

I try this 
DELETE FROM table 
WHERE substring(field,1,4) REGEXP '^[a-z ]+$'; 

+-----------+ 
| field  | 
+-----------+ 
| a asdad| 
| aa asdad| 
| aaa asdad| 
| asda asdad| 
| asd asdad| 
| da asdad| 
| a asdad| 
+-----------+ 

+-----------+ 
| new values| 
+-----------+ 
| asda asdad| 
+-----------+ 
+1

您的数据不符合要求,你到底尝试解决? – baao

+0

唯一的例外是为什么'asd asdad'也被删除,因为它有2个空格而不是1个 –

+0

@AlonEitan在前4个字符中只有1个空格。 – shmosel

回答

0

如果你得到的结果是你所需要的:

SELECT col FROM tab 
WHERE substr(col,1,4) like '% %' 

然后做:

DELETE FROM tab 
WHERE substr(col,1,4) like '% %' 
0

考虑到你需要的地方至少有一个空间来消除所有的值在第4个字符(在本例中,第一个值将被过滤掉,即使它有2个空格),你可以使用SUBSTRINSTR MySQL的功能,以筛选出的值,例如:

SELECT value 
FROM test 
WHERE INSTR(SUBSTR(value, 1, 4), " ") = 0; 

这里的SQL Fiddle

+0

这将过滤出2个空格的值也 – shmosel

+0

这就是问题中的示例 –

+0

前4个字符中没有任何示例有2个空格 – shmosel