如何获取"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";