Mysql拆分字符串并获取整数值

时间:2017-07-19 04:25:40

标签: php mysql numbers substring

我无法拆分字符串,只获取圆括号中的数值。我尝试substring_index,但无法取得成功。

prd_code

HWC-4054 (100 Pcs available)
HWC-7514 (125 pcs available)
HWC-1516 (total 80 pcs available)
HWC-8008 (80pcs available)

必需输出

prd_code

100
125

谢谢。

4 个答案:

答案 0 :(得分:2)

刚才我试着解决你的问题请看:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('HWC-4054 (100 Pcs available)','(',-1),' ',1)

这只是代码段,您需要检查它是否适合您的项目。

答案 1 :(得分:1)

请使用mysql函数检查以下解决方案。

select prd_code,digits(SUBSTRING_INDEX( SUBSTRING_INDEX( prd_code , '(', -1 ), ')', 1)) as one from `your table`

使用下面的mysql函数:

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 ;

来自this

的参考资料

答案 2 :(得分:0)

您可以使用PATINDEX

SELECT SUBSTRING(Your_FieldName, PATINDEX('%[0-9]%', Your_FieldName), LEN(Your_FieldName))

答案 3 :(得分:0)

select SUBSTRING_INDEX(REPLACE(SUBSTRING(SUBSTRING_INDEX(ucase(pcode), '(', 2),LENGTH(SUBSTRING_INDEX(ucase(pcode), '(', 2 -1)) + 1),'(', ' '),'P',1) as prd_code from tbltest;

在这个tbltest中是表名,pcode是该表中包含prd_code值的列