首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提取具有不同长度的字符串的一部分并将其插入表中?

如何提取具有不同长度的字符串的一部分并将其插入表中?
EN

Stack Overflow用户
提问于 2018-12-05 11:04:45
回答 2查看 150关注 0票数 0

我将一些数据从excel工作表上传到sql中的一个表中,我希望使用插入到列PPRName中并插入到另一个表[Verify]中的部分字符串。

插入时列中的数据如下所示:

2018年8月 NW:建筑MTP021 -建筑和民用建筑:砌体NQF 3

我想插入字符串的这一部分:

NW:建筑MTP021 -建筑和民用建筑:砌体NQF 3

进入另一个表[Verify]中,用于PPRName列中的每个PPR名称。PPRs的名称长度各不相同,但都以相同的格式出现。

我还想提取2018年8月的,并将其作为日期并插入到我的表中验证。

我不知道如何使用CharindexSubstrings来实现这一点。

我试过了,但没有返回数据。

代码语言:javascript
复制
select SUBSTRING([PPR_Caption],charindex('[',[PPR_Caption]),charindex([PPR_Caption],']')) 

FROM [dbo].[PPRS] 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-05 11:57:59

您错误地使用了第二个CHARINDEX,并且错误地使用了SUBSTRING命令。

代码语言:javascript
复制
SELECT SUBSTRING(PPR_Caption, CHARINDEX("[", PPR_Caption) + 1, CHARINDEX("]", PPR_Caption) - CHARINDEX("[", PPR_Caption) - 1)
FROM PPRS

SUBSTRING使用起点和长度,而不是起点和终点。要获得长度,请使用端点并减去起始点(并用-1校正偏移量为1的位置)。在第二个CHARINDEX中,您切换了要搜索的字符串和要查找的字符串。

票数 1
EN

Stack Overflow用户

发布于 2018-12-05 12:01:30

在Server中,这样的字符串操作很麻烦。

试试这个:

代码语言:javascript
复制
select replace(v2.str_rest, ' ]', '') as name, cast(str_start as date) as dte
from (values ('August 2018 [ NW: Construction MTP021 - Building and Civil Construction: Masonry NQF 3 ]')
     ) v(str) cross apply
     (values (stuff(v.str, 1, charindex('[', str) + 1, ''), substring(v.str, 1, charindex('[', str) -1))
     ) v2(str_rest, str_start);

SQL Server非常擅长猜测转换日期的格式,因此实际上它将在没有月份日期的情况下转换日期。

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

https://stackoverflow.com/questions/53630825

复制
相关文章

相似问题

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