我们使用自动功能将Outlook邮件帐户中的电子邮件发送到SQL Server 2014数据库中的表。
表格布局:
Column_name Type
Mail_Id uniqueidentifier
Mail_Sender nvarchar
Mail_Sent datetime
Mail_Received datetime
Mail_Subject nvarchar
Mail_Body nvarchar
我希望将Mail_body行中的数据拆分到下表并将其拆分为正确的列(参见下文)
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文本字符串=
的示例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
希望有人可以提供帮助。
答案 0 :(得分:0)
因此,如果您的数据未经过验证,则任何解决方案都会出现问题(如果Name:
行为Name: Email Address:
(意味着用户输入了Email Address:
作为其名称)该怎么办?
假设您进行了某种检查,CHARINDEX
是您可以使用的功能。
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