如何在SQL mysql或psql中获取'A→B→C'的最后一个单词C



如何获取"A"的最后一个字符串C→B→SQL mysql或psql 中的C'

data
A→B→C
A→B→C→D
B→C→D
B→F
E→B→C→G→H
A

我的预期输出是上述数据的最后一个字:

data
C
D
D
F
H
A

在Postgres中,您可以使用带有正则表达式的substring()

substring(data from '→([^→]+)$')

如果你不知道你的分隔符(这再次表明存储分隔字符串是一个多么糟糕的主意(,你可以使用不同的正则表达式:

substring(data from 'W([w]+)$')

其使用";非单词";字符作为分隔符

或者将列拆分为一个数组:

(string_to_array(data, '→'))[cardinality(string_to_array(data, '→'))]

在线演示

在MySQL 8+上,您可以在此处使用REGEXP_SUBSTR

SELECT data, REGEXP_SUBSTR(data, '[A-Z]+$') AS last_data
FROM yourTable;

在没有确切REGEXP_SUSBTR函数的Postgres上,我们可以使用REGEXP_REPLACE

SELECT data, REGEXP_REPLACE(data, '^.*[^A-Z]', '') AS last_data
FROM yourTable;

演示

在MySQL上,上述regex替换选项也应该有效。

您也可以像这样简单地使用SUBSTRING_INDEX

SELECT SUBSTRING_INDEX("A→B→C"→&"-1( ;

结果:";C";

相关内容

  • 没有找到相关文章

最新更新