SQL, split up a field according to whether the specified characters are unique or not
The table named Table in SQL Server has a word field:
AAA |
AAB |
AAC |
ABA |
ACA |
ACB |
BAA |
BAB |
BAC |
BBA |
BCA |
BCB |
BDA |
AAA |
We need to split up the word field into three fields. The 1st field is the 1st character of the original field. If the original field’s first two characters are unique in the field, such as ABA, the 2nd field will be the original field and the 3rd field is null. If the first two characters are not unique, then the 2nd field is these two characters and the 3rd field is the original field.
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 |
Here is the SPL code:
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 |
The new()function creates a new two-dimensional table. group() function groups rows and retains the grouping result. run() function loops to modify values and return the result; ~ is the current group and #2 represents the 2nd field.
Source:https://www.reddit.com/r/SQL/comments/1c82d1a/complex_multicolumn_string_manipulation_query/
SPL Official Website 👉 https://www.scudata.com
SPL Feedback and Help 👉 https://www.reddit.com/r/esProcSPL
SPL Learning Material 👉 https://c.scudata.com
SPL Source Code and Package 👉 https://github.com/SPLWare/esProc
Discord 👉 https://discord.gg/cFTcUNs7
Youtube 👉 https://www.youtube.com/@esProc_SPL