0

我有一个字符串

A323-541-389

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

如何1在 MySQL 中获得它?

是寻找第二个'-'然后向左吗?
如何寻找第二个'-'而不是第一个?

4

3 回答 3

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)
于 2013-10-11T06:43:07.040 回答
1

那将是

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

- 请注意,您的字符串应始终包含至少两个-符号,否则这将不起作用。看到这个小提琴

于 2013-10-11T06:40:53.953 回答
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

于 2013-10-11T09:02:43.647 回答