【发布时间】:2019-10-11 12:52:57
【问题描述】:
嘿,我希望在 Table1 中拆分字符串方面得到一些帮助:
ID Level Options OptionCodes
A5CF-601 G;8 1,2,3 4958,2669,26
88C0-0EA G;9 1,2,3,4,5,6,7,8 2669,21,670,267,13,738,85,55
BE95-196 G;6 Q,L,S,T 6705,6694,6693,6691
拆分“选项”和“选项代码”后,我需要将“级别”与“选项”中的每个值与“-”连接起来。 然后按照它们在字符串中出现的顺序将每个串联与“OptionCodes”相关联。
期望的结果是:
LevelOption OptionCode
G;8 - 1 4958
G;8 - 2 2669
G;8 - 3 26
G;9 - 1 2669
G;9 - 2 21
G;9 - 3 760
G;9 - 4 267
G;9 - 5 13
G;9 - 6 738
G;9 - 7 85
G;9 - 8 55
G;6 - Q 6705
G;6 - L 6694
G;6 - S 6693
G;6 - T 6691
我已经对 string_split、substring、charindex 等进行了一些尝试。但仍然无法理解它。我使用 SQL Server 有一个限制:我无权创建函数,这使得它更具挑战性。无论如何,感谢您的帮助和耐心。
【问题讨论】:
-
选项是否总是像示例中那样从 1 开始的简单升序?选项和选项代码中的值是否始终相同?
-
这可能是我见过的最落后的 SQL 模式实现。你能改变结构吗?
-
@BarneyL 我现在看到有时我在选项中有字母,但关系总是上升的。是的。是的,Options 和 OptionCodes 中总是有相同数量的值
-
SQL Server 版本?是否保证选项和选项代码不会包含重复值,例如
a,b,c,a? -
@JacobH 我希望我可以,这不是我的数据库设计,我现在只使用 ETL...
标签: sql-server csv tsql sql-order-by