比方說,我有以下行:從mysql文本字段中提取數據並按它排序 - 可能嗎?
id data (TEXT)
1 abc"100"dfg
2 abc"200"dfg
3 abc"150"dfg
是否可以訂購的數量在引號(ABC「X」 DFG)的結果和回報是多少?
比方說,我有以下行:從mysql文本字段中提取數據並按它排序 - 可能嗎?
id data (TEXT)
1 abc"100"dfg
2 abc"200"dfg
3 abc"150"dfg
是否可以訂購的數量在引號(ABC「X」 DFG)的結果和回報是多少?
如果數字域總是在同一個地方,你可以寫
ORDER BY 0 + SUBSTRING(data, 5, 3)
,或者如果他們總是被字符串中唯一的雙引號的約束,你可以寫
ORDER BY 0 + SUBSTRING_INDEX(SUBSTRING_INDEX(data, '"', -2), '"', 1)
雖然子字符串是數字,但它們仍然是字符串值,MySQL會按字面順序對它們進行排序。對於數字排序,它們必須通過加零來強制爲數字值。
非常好,謝謝。如果字符串中有更多的引號,但我後面的數字總是在第二個和第三個引號之間?我已經爲我的問題提供瞭解決方案,但我只是想知道。 – domino
你的意思是像「aaa」bbb「1234」ccc「ddd''? SQL確實不擅長這種事情,但是'SUBSTRING_INDEX(SUBSTRING_INDEX(data,',',3),''',-1)'應該可以工作。 – Borodin
我已經意識到,按照它的立場,我的解決方案將按數字字段在*詞法上排序,得到類似於(100,1000,10000,200,2000)的結果。要改爲用數字排序,可以通過加0來強制子字符串,比如'0 + ORDER BY SUBSTRING(data,5,3)'等等。我已經改變了我的回答來反映這一點。 – Borodin