一尘不染

两个字符之间的可变长度子字符串

sql

数据如下所示:

Initiative: Credible Sources;
Initiative: Just in Time;
Initiative: Database Normalization;

我希望它看起来像这样:

Credible Sources
Just in Time
Database Normalization

摆脱一个或另一个很简单。

这:

SELECT DISTINCT LEFT(OPTIONAL_FIELD_2, CHARINDEX(';', OPTIONAL_FIELD_2 + ';')-1) AS OPTIONAL_FIELD_2
FROM my_table
ORDER BY OPTIONAL_FIELD_2

给我这样的建议:倡议:可信来源倡议:及时的倡议:数据库规范化

还有这个:

SELECT DISTINCT RIGHT(OPTIONAL_FIELD_2, LEN(OPTIONAL_FIELD_2)-12) AS OPTIONAL_FIELD_2
FROM my_table
ORDER BY OPTIONAL_FIELD_2

给我这个:

Credible Sources;
Just in Time;
Database Normalization;

很难弄清楚如何将两者结合起来。


阅读 144

收藏
2021-03-08

共1个答案

一尘不染

只是使用substring()怎么样?

select replace(substring(option_field_2, 13, 999), ';', '')

或者,如果您不知道前缀有多长时间:

select replace(stuff(option_field_2, 1, charindex(':', option_field_2) + 1, ''), ';', '')

是一个db<> fiddle

2021-03-08