2016-06-12 62 views
1

整数值我在MYSQL表“primaryCamera”,它的价值在于它从字符串属性提取在MySQL

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

我想列出手机大于或等于800万像素的属性,什么是准确的查询MYSQL,它为我工作。

请帮帮我。

+0

我在找“LIKE”,但这不太好。任何正则表达式需要。 – razaulmustafa

+1

'相机8 MP'或'相机9 MP'就是你想要取的,而'相机7 MP'不是。这一栏是否都是这种格式的“Camera X MP”? – Blank

+0

本专栏有各种编号,如9MP,3MP,12MP。我需要一个查询,它使用的数量少于或多于一个。如我有查询。 SELECT'primaryCamera' FROM table_name WHERE'primaryCamera' REGEXP'[8]'它工作正常。但列中还有一些其他整数。正如刚才提到的。我能做些什么 – razaulmustafa

回答

0

使用子串,语法是:

SELECT SUBSTR( '串',开始位置,长度)

与您的查询替换字符串在这里

+0

请给我查询。我有属性PrimaryCamera,我想选择相机大于8MP的手机。 – razaulmustafa

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长度Camera = 1

= 6

开始指数的startIndex字符串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 - START_INDEX_OF_DESIRED_SUBSTRING

SUBSTRING(primaryCamera FROM START_INDEX_OF_DESIRED_SUBSTRING FOR LENGTH_YOU_WANT_TO_EXTRACT);

注:可以储存您的产品的属性(例如相机)在不同表格下的不同列中。否则,即使执行最简单的任务,您也很快会接受很多繁琐的任务。

+0

这不起作用。你能否重新把这个写成这种格式? 800万像素。我在开始时没有“相机” – razaulmustafa

+0

在'primaryCamera'列下显示一个真实数据。 – 1000111

+0

SELECT'primary' FROM specifications_new_vastgsm WHERE LOCATE('MP','primary')和'primary'> = 8 .....这项工作对我来说 – razaulmustafa