2017-06-12 69 views
0

我有一列包含aa01和ZZ99之間的一系列字母和數字。我似乎無法弄清楚如何在列中搜索aa00到​​BZ99等特定範圍的列。如何在一系列字母和數字之間用SQL進行搜索

我嘗試使用功能之間的,如下面的一個,但它沒有工作:

SELECT test_name 
FROM Test 
WHERE test_series BETWEEN 'aa00' and 'BZ99' 
GROUP BY test_name 

編輯:我嘗試添加引號,它仍然不返回任何東西(我加在它上面還有)

Edit2:MySQL是引擎。

+1

將引號添加到您的字符串中。 –

+0

'WHERE test_series'aa00'和'BZ99'之間?什麼引擎? mySQL,Postgresql? SQL服務器,Oracle等? Ascii小寫字母出現在大寫字母之後,所以它必須是'BZ99',而'aa00'是最低的項目必須在第一個之間。 – xQbert

+0

我試着添加引號,它仍然不會返回任何內容。 – Juststarted

回答

0

BETWEEN要求較低的值爲第一位。由於大寫字母在小寫之前,請切換順序;但要確定這是你之後的值!

SELECT test_name 
FROM Test 
WHERE test_series BETWEEN 'BZ99' and 'aa00' 
GROUP BY test_name 
+1

'由於大寫字母在小寫字母之前'此語句取決於列的整理。 http://sqlfiddle.com/#!9/78788a/1 –

+0

優秀的評論。我確實假設了一個排序規則,其中大寫字母在小寫字母之前。 – xQbert

-1

因爲我無法評論,所以我會在此將其添加爲答案。這解釋得很好。

SQL BETWEEN for text vs numeric values

編輯:具體而言,這一部分,看你的ASCII值:

同樣,表達式:

where food_name BETWEEN 'G' AND 'O' 

將匹配 'O',而不是其他任何字符串開頭'O'。

一旦簡單kludge是使用「〜」。這具有最大的7位ASCII值,因此對於英文應用程序,它通常運行良好:

where food_name between 'G' and 'O~' 
+0

請不要在您的答案中留下鏈接。至少寫一個簡短的總結。 – Gasper

相關問題