首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从sql中的列中查找特定数字

从sql中的列中查找特定数字
EN

Stack Overflow用户
提问于 2020-05-10 01:51:20
回答 3查看 40关注 0票数 0

我希望从sql ex中的以下列中提取百分比

代码语言:javascript
复制
123456789; 01/09/2014 00:00:00; 5%; 1896; 123456ae5. 

我只想要百分比。它可以改变,也就是说,它可以有任何百分比值。只是为了澄清一下,百分比值将始终出现在2个分号之后

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-10 05:09:34

SQL Server的字符串操作函数很糟糕。以下是一种方法:

代码语言:javascript
复制
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)

这将查找%,并删除从该点开始的字符串。然后,它删除最后一个分号后面的字符之前的所有内容。

票数 0
EN

Stack Overflow用户

发布于 2020-05-10 02:19:10

使用string_split将固定分隔字符串转换为下面的row.Try,

代码语言:javascript
复制
select value from string_split('123456789; 01/09/2014 00:00:00; 5%; 1896; 123456ae5.',';') 

where值,如‘%’

输出将是,

代码语言:javascript
复制
 5%
票数 0
EN

Stack Overflow用户

发布于 2020-05-10 02:37:47

这相当难看,但它是有效的(Fiddle):

代码语言:javascript
复制
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;

基本上找到第二个分号的索引,以及第三个分号还有多少个字符,并获得该分号的子串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61701231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档