gpt4 book ai didi

parsing - 解析描述字符串以填充 NULL 字段

转载 作者:行者123 更新时间:2023-12-02 13:11:57 24 4
gpt4 key购买 nike

Informix 12.10

tblItems
(
Type SMALLINT, {Precious Metal = 1, Other = 2}
Description VARCHAR,
Quantity SMALLINT,
Name VARCHAR,
Weight DECIMAL(5,1),
Purity SMALLINT,
Brand VARCHAR,
Model VARCHAR,
SerialNum VARCHAR
);

编辑更新:下面的示例数据存储在 tblItems.Type 和 tblItems.Description 中。请注意,描述栏中的内容均为大写字符,也可能包含标点符号。

2|1LAPTOP APPLE 15.5" MODEL MACKBOOK PRO,S/N W80461WCAGX, WITH CHARGER||||||||
1|1RING 2.3PW 14K||||||||
2|DRILL RIOBY, MODEL D5521 S/N77720||||||||
2|TRIMMER TORO, MODEL 0242 S/N 66759||||||||
2|CELL SAMSUNG NOTE3, MODEL SM-N900T S/N RV8F90YLZ9W||||||||

我需要使用评论中提到的规则将示例项目描述解析到下面的列中:

Quantity,      {if description string does not start with a number, then Quantity = 1}
Name, {Always the first element if description has no quantity, second element if quantity present]
Weight, {Always before "PW" if Type = 1, Default to zero if Type = 2}
Purity, {Always before "K" if Type = 1, Default to NULL if Type = 2}
Brand, {Always the second element in description, if present}
Model, {Always after "MODEL", with or without a space}
Serial Number {Always after "S/N", with or without a space}

我想使用 UPDATE 语句来完成此操作,但如果 Informix 有一个导入实用工具(如 SQL-Server 的 SSIS),那么这可能是一个更好的选择。

更新,预期结果:

Quantity   1               1       1        1         1
Name LAPTOP RING DRILL TRIMMER CELL
Weight 0.0 2.3 0.0 0.0 0.0
Purity 14
Brand APPLE RIOBY TORO SAMSUNG
Model MACKBOOK PRO D5521 0242 SM-N900T
SerialNum W8046WCAGX 77720 66759 RV8F90YLZ9W

最佳答案

假设您使用的是 Informix 12.10.XC8 或更高版本,您可以尝试使用正则表达式来解析描述字符串(请参阅在线documentation此处)。

例如,对于序列号,您可以执行以下操作:

UPDATE tblitems
SET
serialnum =
DECODE
(
regex_match(description, '(.*)(S\/N)(.*)', 3)
, 't'::BOOLEAN, regex_replace(description, '(.*)(S\/N)([[:blank:]]?)([[:alnum:]]*)(.*)', '\4', 0, 3)
, 'f'::BOOLEAN, ''
)

因此,在前面的示例中,我正在测试描述是否包含 S/N 字符串,如果是这样,我使用 regex_replace 返回其后面的值,在在这种情况下,正则表达式中的第四个匹配组(我没有使用 regex_extract 来获取值,因为它似乎返回多个值,并且我收到错误 -686)。

您可以将此方法扩展到其余列,并查看正则表达式是否足以解析描述列。

关于parsing - 解析描述字符串以填充 NULL 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53568123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com