整数值我在MYSQL表“primaryCamera”,它的价值在于它从字符串属性提取在MySQL
Camera 8 MP, 3264 x 2448 pixels, Carl Zeiss optics, optical image stabilization, autofocus, dual
我想列出手机大于或等于800万像素的属性,什么是准确的查询MYSQL,它为我工作。
请帮帮我。
整数值我在MYSQL表“primaryCamera”,它的价值在于它从字符串属性提取在MySQL
Camera 8 MP, 3264 x 2448 pixels, Carl Zeiss optics, optical image stabilization, autofocus, dual
我想列出手机大于或等于800万像素的属性,什么是准确的查询MYSQL,它为我工作。
请帮帮我。
使用子串,语法是:
SELECT SUBSTR( '串',开始位置,长度)
与您的查询替换字符串在这里
请给我查询。我有属性PrimaryCamera,我想选择相机大于8MP的手机。 – razaulmustafa
如果下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);
注:可以储存您的产品的属性(例如相机)在不同表格下的不同列中。否则,即使执行最简单的任务,您也很快会接受很多繁琐的任务。
这不起作用。你能否重新把这个写成这种格式? 800万像素。我在开始时没有“相机” – razaulmustafa
在'primaryCamera'列下显示一个真实数据。 – 1000111
SELECT'primary' FROM specifications_new_vastgsm WHERE LOCATE('MP','primary')和'primary'> = 8 .....这项工作对我来说 – razaulmustafa
我在找“LIKE”,但这不太好。任何正则表达式需要。 – razaulmustafa
'相机8 MP'或'相机9 MP'就是你想要取的,而'相机7 MP'不是。这一栏是否都是这种格式的“Camera X MP”? – Blank
本专栏有各种编号,如9MP,3MP,12MP。我需要一个查询,它使用的数量少于或多于一个。如我有查询。 SELECT'primaryCamera' FROM table_name WHERE'primaryCamera' REGEXP'[8]'它工作正常。但列中还有一些其他整数。正如刚才提到的。我能做些什么 – razaulmustafa