SQL,根据唯一性拆分字段
SQL Server 的表 Table 有 word 字段。
AAA |
AAB |
AAC |
ABA |
ACA |
ACB |
BAA |
BAB |
BAC |
BBA |
BCA |
BCB |
BDA |
AAA |
请将 word 拆分为 3 个字段,第 1 个字段固定为原字段的第 1 个字符;如果原字段的前 2 个字符在全列是唯一的,如 ABA,则第 2 个字段是原字段,第 3 个字段是 null;如果不是唯一的,则第 2 个字段是前 2 个字符,第 3 个字段是原字段。
A |
AA |
AAA |
A |
AA |
AAB |
A |
AA |
AAC |
A |
ABA |
null |
A |
AC |
ACA |
A |
AC |
ACB |
B |
BA |
BAA |
B |
BA |
BAB |
B |
BA |
BAC |
B |
BBA |
null |
B |
BC |
BCA |
B |
BC |
BCB |
B |
BDA |
null |
A |
AA |
AAA |
编写SPL代码:
A |
|
1 |
=mySQLDB.query("select word from Table") |
2 |
=A1.new(left(word,1),word,null) |
3 |
>A2.group(left(#2,2)).run(if(~.len()>1,~.run(#2=(left(#3=#2,2))))) |
4 |
return A2 |
函数new新建二维表,group分组并保留分组结果,run循环修改并返回修改结果,~是当前组,#2是第2个字段。
来源:https://www.reddit.com/r/SQL/comments/1c82d1a/complex_multicolumn_string_manipulation_query/
英文版