如何获得第二次出现(MySQL)

时间:2013-10-11 06:37:21

标签: mysql

我有一个字符串

A323-541-389

我想得到第二个“ - ”前面的字符,在这种情况下应该是1

如何在MySQL中获取1

第二次' - '然后左转吗? 如何搜索第二个' - '而不是第一个? -

3 个答案:

答案 0 :(得分:3)

select substring(substring_index("A323-541-389","-",2),-1);

也可能有其他方式。

mysql> select substring(substring_index("A323-541-389","-",2),-1);
+-----------------------------------------------------+
| substring(substring_index("A323-541-389","-",2),-1) |
+-----------------------------------------------------+
| 1                                                   |
+-----------------------------------------------------+
1 row in set (0.00 sec)

答案 1 :(得分:1)

那将是

select right(substring_index('A323-541-389', '-', 2), 1)

- 请注意,您的字符串应始终包含至少两个-符号,否则这将无效。请参阅此fiddle

答案 2 :(得分:0)

从聊天评论看,如果字段的值在第二个“ - ”之前为1,则显示该字段的值。

如果是这样,你可以做这个基本的SQL: -

SELECT *
WHERE LENGTH(col1) - LENGTH(REPLACE(col1, '-', '')) >= 2
AND RIGHT(SUBSTRING_INDEX(col1, '-', 2), 1) = '1'

但是你可以使用正则表达式: -

http://dev.mysql.com/doc/refman/5.1/en/regexp.html