从Mysql中的字符串属性中提取Integer值

时间:2016-06-12 06:45:42

标签: mysql

我在MYSQL表中有一个属性" primaryCamera",其值为

Camera 8 MP, 3264 x 2448 pixels, Carl Zeiss optics, optical image stabilization, autofocus, dual

我想列出大于或等于8MP的手机,MYSQL中的确切查询对我有用。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

如果primaryCamera列下的数据采用以下格式,则下面给出的查询可能会完成此任务。

格式: Camera X MP.....

<强>查询:

SELECT 
primaryCamera
FROM table_name 
WHERE 
CAST(SUBSTRING(@str FROM LOCATE('Camera',@str)+LENGTH('Camera') FOR (LOCATE('MP',@str)-(LOCATE('Camera',@str)+LENGTH('Camera')))) AS UNSIGNED) > 8;

<强>解释

  • LOCATE('Camera',@str)返回字符串的起始索引 Camera
  • LENGTH('Camera')返回字符串Camera的长度 6
  • (LOCATE('MP',@str)返回字符串MP的起始索引。

示例:

鉴于,

primaryCamera = 'Camera 8 MP, 3264 x 2448 pixels, Carl Zeiss optics, optical image stabilization, autofocus, dual'

字符串Camera的startIndex = 1

Camera = 6

的长度

开始字符串MP = 10的索引。

您要查找的整数值位于[7,10]范围内。

SUBSTRING(string FROM START_INDEX_OF_DESIRED_SUBSTRING FOR LENGTH_YOU_WANT_TO_EXTRACT)就像这样。

为了达到这个目的,你需要这样做:

START_INDEX_OF_DESIRED_SUBSTRING = StartIndex of Camera + Length of Camera

LENGTH_YOU_WANT_TO_EXTRACT = Start position of string {MP {1}}

- START_INDEX_OF_DESIRED_SUBSTRING

注意:您应该将产品的属性(例如相机)存储在不同表格下的不同列中。否则,即使是最简单的任务,您很快就会接受许多繁琐的任务。

答案 1 :(得分:0)

使用子字符串,语法为:

SELECT SUBSTR(&#39; string&#39;,start,length)

将此处的字符串替换为您的查询