我希望从sql ex中的以下列中提取百分比
123456789; 01/09/2014 00:00:00; 5%; 1896; 123456ae5. 我只想要百分比。它可以改变,也就是说,它可以有任何百分比值。只是为了澄清一下,百分比值将始终出现在2个分号之后
发布于 2020-05-10 05:09:34
SQL Server的字符串操作函数很糟糕。以下是一种方法:
select v.*,
right(v1.str, charindex(';', reverse(v1.str)) - 2)
from (values ('123456789; 01/09/2014 00:00:00; 5%; 1896; 123456ae5. ')) v(str) cross apply
(values (left(v.str, charindex('%', str) - 1))) v1(str)这将查找%,并删除从该点开始的字符串。然后,它删除最后一个分号后面的字符之前的所有内容。
发布于 2020-05-10 02:19:10
使用string_split将固定分隔字符串转换为下面的row.Try,
select value from string_split('123456789; 01/09/2014 00:00:00; 5%; 1896; 123456ae5.',';') where值,如‘%’
输出将是,
5%发布于 2020-05-10 02:37:47
这相当难看,但它是有效的(Fiddle):
SELECT
SUBSTRING(
value,
CHARINDEX(';', value, CHARINDEX(';', value) + 1) + 1,
CHARINDEX(';', value, CHARINDEX(';', value, CHARINDEX(';', value) + 1) + 1)
- CHARINDEX(';', value, CHARINDEX(';', value) + 1) - 1
)
from data;基本上找到第二个分号的索引,以及第三个分号还有多少个字符,并获得该分号的子串。
https://stackoverflow.com/questions/61701231
复制相似问题