MySQL如何从varchar列

时间:2016-09-12 07:28:41

标签: mysql sql regex

我有一个名为'Costdetails'的表。

有一个名为'cost'的列,它是 VARCHAR 列。它可以是任何东西,如下所示。

Cost ssss
20000 - $
Rs - 1000/-
10000 Rupees etc.

我想从这个varchar列中取出确切数量( Ex: 1000,20000)。 尝试谷歌关于这个,我有一个查询,然后我尝试了这个查询。

SELECT cost
FROM Costdetails
WHERE (cost REGEXP '^[0-9]' or cost REGEXP '[0-9]^' or cost REGEXP '[0-9]');


Output :

Rs-1000/-
10000 - $
$ 10000

此查询帮助我获取具有整数值的行。 但是想从列中删除额外的东西(输出:喜欢 1000,不喜欢 Rs-1000 /-).

任何想法,提前致谢!!!。

2 个答案:

答案 0 :(得分:0)

您可以使用函数来完成查询。例如: -

 SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS digits;
DELIMITER |
CREATE FUNCTION digits( str CHAR(32) ) RETURNS CHAR(32)
BEGIN
  DECLARE i, len SMALLINT DEFAULT 1;
  DECLARE ret CHAR(32) DEFAULT '';
  DECLARE c CHAR(1);

  IF str IS NULL
  THEN 
    RETURN "";
  END IF;

  SET len = CHAR_LENGTH( str );
  REPEAT
    BEGIN
      SET c = MID( str, i, 1 );
      IF c BETWEEN '0' AND '9' THEN 
        SET ret=CONCAT(ret,c);
      END IF;
      SET i = i + 1;
    END;
  UNTIL i > len END REPEAT;
  RETURN ret;
END |
DELIMITER ;

SELECT digits(cost) from Costdetails;

答案 1 :(得分:0)

您可以使用cast功能,如下所示: -

SELECT cast('1000/-' as UNSIGNED)