0
排名我有一個表my_table
包含像字符串出現在MySQL
my_table (each line contain one row)
-----
abc def
def jsj
kfi def ldkf
kgdu abc
我想有一個像
count string
3 def
2 abc
1 ...
是否有可能導致自由文本?什麼是SQL?
排名我有一個表my_table
包含像字符串出現在MySQL
my_table (each line contain one row)
-----
abc def
def jsj
kfi def ldkf
kgdu abc
我想有一個像
count string
3 def
2 abc
1 ...
是否有可能導致自由文本?什麼是SQL?
如果總是用空格分隔,那麼您可以使用一系列生成的數字根據空格拆分字符串。
像這樣
SELECT aString, COUNT(*)
FROM
(
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX((some_column, ' ', units.iCnt + 10 * tens.iCnt + 100 * hundreds.iCnt), ' ', -1) AS aString
FROM some_table,
(SELECT 1 aCnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0) units,
(SELECT 1 aCnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0) tens,
(SELECT 1 aCnt UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0) hundreds
WHERE LENGTH(some_column) - LENGTH(REPLACE(some_column, ' ', '')) >= (units.iCnt + 10 * tens.iCnt + 100 * hundreds.iCnt)
) sub0
這使用3個交叉連接選擇其中每個生成的數字0到9,這可賦予範圍爲0至999(可以很容易地添加更多的交叉連接,如果有999個以上字符串在列中)。這個數字與SUBSTRING_INDEX一起使用以獲得字符串到X空間,然後SUBSTRING_INDEX與-1一起使用以從前一空間獲取字符串。
WHERE子句僅用於派生每個字符串(SUBSTRING_INDEX否則會多次獲取最後一個字符串)。