我在MYSQL表中有一个属性" primaryCamera",其值为
Camera 8 MP, 3264 x 2448 pixels, Carl Zeiss optics, optical image stabilization, autofocus, dual
我想列出大于或等于8MP的手机,MYSQL中的确切查询对我有用。
请帮帮我。
答案 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)
将此处的字符串替换为您的查询