2016-06-12 65 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