2017-08-08 65 views
0

我需要計算列的不同元素,但我不得不忽略部分字符串。是否可以使用正則表達式與SQL?

例子:我有一個值的列:

+-----------+ 
| col1 | 
+-----------+ 
| xxx-xx-1 | 
+-----------+ 
| xxx-xx-2 | 
+-----------+ 
| yyy-yy-1 | 
+-----------+ 
| zz-zz-z-1 | 
+-----------+ 
| zz-zz-z-2 | 
+-----------+ 

如果我這樣做SELECT COUNT(DISTINCT col1) FROM mytable將返回5,但我希望得到的只是3(我需要忽略的數字)

有沒有辦法使用正則表達式忽略從字符串末尾到找到的第一個連字符的所有內容?

我需要忽略從字符串的末尾直到找到第一個連字符,因爲大小可能會有所不同。

我希望大家都明白這個問題,謝謝大家!

+0

可能重複[MySQL:使用REGEX來提取字符串(選擇REGEX)](https://stackoverflow.com/questions/4021507/mysql-use-regex-to-extract-string-select-regex) – BugHunterUK

回答

3

MySQL不支持子字符串操作的正則表達式。但是你可以使用substring_index()

SELECT COUNT(DISTINCT substring_index(reverse(col1), '-', 1)) 
FROM mytable; 

表達substring_index(reverse(col1), '-', 1)將返回一切到最後連字符(因爲reverse())。這將以相反的順序對不同的值進行計數,但這不會影響結果。

相關問題