首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL表数据拆分

SQL表数据拆分
EN

Stack Overflow用户
提问于 2015-11-17 21:52:44
回答 1查看 56关注 0票数 1

我们使用自动功能将电子邮件从outlook邮件帐户发送到SQL Server 2014数据库中的表。

表格布局:

代码语言:javascript
复制
Column_name Type
Mail_Id uniqueidentifier
Mail_Sender nvarchar
Mail_Sent   datetime
Mail_Received   datetime
Mail_Subject    nvarchar
Mail_Body   nvarchar

我希望将Mail_body行中的数据拆分到下表中,并将其拆分到正确的列中(见下文)

代码语言:javascript
复制
Column_name Type
Client_ID   uniqueidentifier
Client_Name nvarchar
Client_Surname  nvarchar
Email_Address   nvarchar
Phone_Number    nvarchar
DOB nvarchar
Smoker  nvarchar
AOCR    nvarchar
Term    nvarchar
BTTC    nvarchar
Credit_User nvarchar
Insurance_Type  nvarchar
Premium nvarchar
Paid_Commission money

Mail_body文本字符串示例=

代码语言:javascript
复制
Sent from my iPhone

Begin forwarded message:


    Product: Life & Critical Illness
    Name: XXXXXX
    Email Address: XXXXXXXX@yahoo.com <mailto:XXXXXXXX@yahoo.com> 
    Phone: 07XXXXXXXX
    Date of Birth: XX/XX/XXXX
    Smoker: Yes
    Amount of cover required: 
    Term: 
    Best Time to Call: Now/ASAP
    Credit User: XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXX

希望有人能帮上忙。

EN

回答 1

Stack Overflow用户

发布于 2015-11-17 22:25:57

因此,如果您的数据没有经过验证,那么任何解决方案都会出现问题(如果Name:行是Name: Email Address: (意味着用户输入了Email Address:作为他们的名字)呢?

假设你有某种检查,CHARINDEX是一个你可以使用的函数。

代码语言:javascript
复制
INSERT INTO NewTable 
(FIELDS)
 SELECT 
 ...
 SUBSTRING(Mail_Body,CHARINDEX('Product:', Mail_Body,0),CHARINDEX('Name:', Mail_Body,0)-1),
 ...
FROM OldTable

请注意,对于长字符串,创建一个通过字符串跟踪以前的charindex值的存储过程可能更有效,这样您就不必一直调用相同的函数。

https://msdn.microsoft.com/en-us/library/ms186323.aspx https://msdn.microsoft.com/en-ca/library/ms187748.aspx

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

https://stackoverflow.com/questions/33758678

复制
相关文章

相似问题

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