我有一个旧的老式系统,看起来像这样的一张桌子。将字符串变成行
OptionsTable
id options
=== ========================
101 Apple,Banana
102 Audi,Mercedes,Volkswagen
在消耗数据,功能会分解选项列进名单管理和填充下拉列表等应用
的问题是,这种数据不是很友好SQL,使得难以进行临时查询和报告。
为此,我想将数据转换成一个友好的观点,看起来像这样:
OptionsView
id name value
=== ========== =====
101 Apple 1
101 Banana 2
102 Audi 1
102 Mercedes 2
102 Volkswagen 3
现在,已经有上分割字符串一些议题到在T-SQL行(Turning a Comma Separated string into individual rows想到),但除了将字符串拆分为行之外,我还需要根据字符串中的位置生成值。
该计划是制作隐藏原始表的uglines的视图。
它将与表中的答案一起用于收集答案,以便进行临时统计查询。
有没有这样做的好方法,而不必使用游标等?
使用XML拆分字符串方法是相当危险的。“一个非常强烈的警告必须与XML方法一起使用:只有在您可以保证您的输入字符串不包含任何非法XML字符时才能使用它。一个名字<, >或者&功能会炸毁'。如本文中所述http://sqlperformance.com/2012/07/t-sql-queries/split-strings –