2014-01-11 73 views
1

我想实现MySQL中的查询,将空间MySQL查询将从字符串中删除字符

例如之前删除字符:

UA 016

我想要删除'UA'的空间,只保留

这里的查询语句:

update field_data_field_id set field_id_value = '.... what i need here'; 

在此先感谢

+0

请参阅[REPLACE()](http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_replace)。 – user2864740

回答

1
UPDATE field_data_field_id 
SET field_id_value=SUBSTRING_INDEX(
        SUBSTRING_INDEX(field_id_value,' ',2),' ',-1); 
2
UPDATE table SET column=REPLACE(column,SUBSTRING_INDEX(column,' ',1),''); 

Fiddle

假设所有值都具有一个空间。

+0

这个怎么样? http://sqlfiddle.com/#!2/19ba8/1 :) –

+0

如果他在第一个空格之后会有字符,那么会破坏,但是他没有这么说。 – Mihai

3

试试这个

CREATE FUNCTION IsNumeric (val varchar(255)) RETURNS tinyint 
RETURN val REGEXP '^(-|\\+){0,1}([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)$'; 

CREATE FUNCTION NumericOnly (val VARCHAR(255)) 
RETURNS VARCHAR(255) 
BEGIN 
DECLARE idx INT DEFAULT 0; 
IF ISNULL(val) THEN RETURN NULL; END IF; 

IF LENGTH(val) = 0 THEN RETURN ""; END IF; 

SET idx = LENGTH(val); 
WHILE idx > 0 DO 
IF IsNumeric(SUBSTRING(val,idx,1)) = 0 THEN 
SET val = REPLACE(val,SUBSTRING(val,idx,1),""); 
SET idx = LENGTH(val)+1; 
END IF; 
SET idx = idx - 1; 
    END WHILE; 
    RETURN val; 
    END; 

通过调用函数NumericOnly像这样使用它:

select NumericOnly('1&2') as result; 

返回: “12”

select NumericOnly('abc987') as result; 

返回:“987”

+0

谢谢soooo多@echo_Me –

+0

有点慢,但它的工作原理;) – Irakli