5

在 MYSQL 中,给定一个带点的字符串,我想选择最后一个点之前的所有内容。例如:输入

www.java2s.com

输出:

www.java2s

substring_index 似乎相反:

mysql> SELECT SUBSTRING_INDEX('www.java2s.com', '.', -1);
+--------------------------------------------+
| SUBSTRING_INDEX('www.java2s.com', '.', -1) |
+--------------------------------------------+
| com |
+--------------------------------------------+

可以这样做吗?

4

3 回答 3

6
    select substr('www.java2s.sth.com', 1, (length('www.java2s.sth.com')- 
    length(SUBSTRING_INDEX(('www.java2s.sth.com'), '.', -1))-1));`
于 2012-05-19T05:51:21.943 回答
5

如果您正在寻找更好的解决方案,它是:

SET @domain = "www.java2s.com";
SELECT SUBSTRING(@domain, 1, LENGTH(@domain)-LOCATE('.', REVERSE(@domain)));
于 2016-04-29T17:17:21.507 回答
1

用这个

SELECT SUBSTRING_INDEX('www.java2s.com', '.', 2)

更通用

SELECT SUBSTRING_INDEX('www.java2s.com', '.', ( LENGTH('www.java2s.com') - LENGTH(REPLACE('www.java2s.com', '.', '')))  )
于 2012-05-19T05:07:48.947 回答