【发布时间】:2017-09-30 05:05:30
【问题描述】:
我正在尝试从Gravity Form list control 中提取数据。
从本质上讲,列表控件允许您在 Web 表单(构建在 WordPress 网站上)上收集多列表数据。但是,用户提供的表格和记录都会被放入一行文本中,以供表单的记录提交。
我已经设法编写了一个自定义标量函数来获取原始输入文本,如下所示:
a:3:{i:0;a:3:{s:6:"ItemID";s:1:"1";s:4:"Name";s:10:"Dennis Dish";s:12:"Phone Number";s:12:"01225 123456";}i:1;a:3:{s:6:"ItemID";s:1:"2";s:4:"Name";s:13:"Sally Spatula";s:12:"Phone Number";s:12:"01225 654321";}i:2;a:3:{s:6:"ItemID";s:1:"3";s:4:"Name";s:10:"Terry Tins";s:12:"Phone Number";s:12:"01225 789456";}}
...并像这样返回它(仍然作为单个文本字符串):
ItemID: 1
Name: Dennis Dish
Phone Number: 01225 123456
ItemID: 2
Name: Sally Spatula
Phone Number: 01225 654321
ItemID: 3
Name: Terry Tins
Phone Number: 01225 789456
这是相当直接且有用的,但我现在需要编写一些可以将原始字符串返回到一组记录的东西。
例如,如果我有一个包含以下数据的表:
| ID | RawString |
|--------|-------------------------------|
| 1 | a:3:{i:0;a:3:{s:6:"ItemID"... |
..而不是将其作为更整洁的字符串返回,如下所示:
| ID | TidyString |
|--------|-------------------------------|
| 1 | ItemID: 1 Name: Dennis Dish...|
..我正在寻找返回以下内容的方法:
| ID | ItemID | Name | Phone Number |
|--------|--------|---------------|--------------|
| 1 | 1 | Dennis Dish | 01225 123456 |
| 1 | 2 | Sally Spatula | 01225 654321 |
| 1 | 3 | Terry Tins | 01225 789456 |
在我的标量函数中,我能够识别出有助于整理的部分原始字符串格式:
-
a:n:{...(一开始)表示有多少条记录,所以a:3:{...表示 有 3 条记录。 -
i:n;...表示记录号,所以i:0;...表示第一个 记录。 -
a:n:{...(记录内)表示 记录中的列/值对,所以a:3:{表示有3对 此记录中的列/值。 -
s:...表示后面的列或值的字符数,因此s:2...表示列或值的长度为 2 个字符。
通过缩进原始字符串可能更容易将其可视化:
a:3:{
i:0;
a:3:{
s:2:"ItemID";
s:1:"1";
s:4:"Name";
s:10:"Dennis Dish";
s:12:"Phone Number";
s:12:"01225 123456";
}
i:1;
a:3:{
s:2:"ItemID";
s:1:"2";
s:4:"Name";
s:13:"Sally Spatula";
s:12:"Phone Number";
s:12:"01225 654321";
}
i:2;
a:3:{
s:2:"ItemID";
s:1:"3";
s:4:"Name";
s:10:"Terry Tins";
s:12:"Phone Number";
s:12:"01225 789456";
}
}
我不确定从哪里开始将原始字符串中的数据作为结果集返回。
任何指针将不胜感激。
【问题讨论】:
标签: tsql ssms gravity-forms-plugin ssms-2012