25

在字符串中定位第三个空格的索引的最简单方法是什么。

我的目标是CCC摆脱这个以空格分隔的列表:AAAA BBBB CCCC DDDD EEE. 其中 A 和 B 和 D 是固定长度,C 是可变长度,EFG 是可选的。

在Java中我会使用indexof,起点为10,这会给我第三个空格,但似乎我不能在MySQL中做到这一点,所以我想也许我可以找到一个“第三个索引”函数?

4

6 回答 6

60

你会想使用这样的SUBSTRING_INDEX功能

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(field, ' ', 3), ' ', -1)
FROM table

内部函数调用将让您到达,AAAA BBBB CCCC而外部函数调用会将其缩减为CCCC.

于 2013-01-15T21:55:44.673 回答
3

你可以使用SUBSTRING_INDEX.

于 2013-01-15T21:53:17.970 回答
2

通常,您可以使用以下方法选择nth字符串中的单词:

SET @N = 3; -- 3rd word
SET @delimiter = ' ';
SELECT
  SUBSTRING_INDEX(SUBSTRING_INDEX(words, @delimiter, @N), @delimiter, -1)
FROM
  my_table
于 2018-09-04T11:56:24.720 回答
1

DROP FUNCTION IF EXISTS `Find_string_by_position`$$

CREATE DEFINER=`root`@`localhost` FUNCTION
`Find_string_by_position`(str VARCHAR(255), delimeter VARCHAR(255),pos INT(2)) RETURNS VARCHAR(255) CHARSET utf8mb4 BEGIN
       DECLARE s VARCHAR(255);  
       DECLARE d VARCHAR(255); 
       DECLARE p INT DEFAULT 1;
       DECLARE val VARCHAR(255);


       SET s = LCASE(str); 
       SET d = delimeter;
       SET p = pos;
       SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(s,d,p),d,-1) INTO @val; 

       RETURN @val;  

   END$$

DELIMITER ;

于 2020-02-12T16:45:01.770 回答
0

使用以下查询在分组后从表中查找任何随机 id。这里 id 是 autoincrement_id。

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(id),",",FLOOR(RAND()*COUNT(DISTINCT id))+1),",",-1) AS random_id FROM tableName GROUP BY groupbyColumn

于 2020-02-12T17:00:10.447 回答
0
ID 姓名 部门
1 阿米特·库马尔·夏尔马 计算机科学

*您可以通过简单的查询提取第三个字符串

询问 :-

SELECT SUBSTRING_INDEX(Name, ' ', -1) as last_name FROM table_name

输出:- 夏尔马

于 2021-02-09T05:45:40.200 回答