【发布时间】:2021-01-04 23:45:05
【问题描述】:
有一个像 WaitCheckBil 这样的表:
| BIL\_NO | USRS | DATE |
| --- | --- | --- |
| XC20090015 | ;STO09;STO02;STO04;STO06;STO10;STO07;STO10; | 2020\-09\-15 00:00:00.000 |
| XC20090016 | ;STO09;STO02;STO04;STO06;STO10;STO07;STO10; | 2020\-09\-15 00:00:00.000 |
| XC20090017 | ;STO09;STO02;STO04;STO06;STO10;STO07;STO10; | 2020\-09\-15 00:00:00.000 |
| XC20090018 | ;STO09;STO02;STO04;STO06;STO10;STO07;STO10; | 2020\-09\-16 00:00:00.000 |
还有一个用户喜欢的表格:
| USR | NAME |
| --- | --- |
| STO02 | John |
| STO04 | Eva |
| STO06 | Lisa |
| STO07 | Boke |
| STO09 | Nii |
| STO10 | Alisa |
预期结果:
| BIL\_NO | USRS | DATE |
| --- | --- | --- |
| XC20090015 | ;Nii;John;Eva;Lisa;Alisa;Boke;Alisa; | 2020\-09\-15 00:00:00.000 |
| XC20090016 | ;Nii;John;Eva;Lisa;Alisa;Boke;Alisa; | 2020\-09\-15 00:00:00.000 |
| XC20090017 | ;Nii;John;Eva;Lisa;Alisa;Boke;Alisa; | 2020\-09\-15 00:00:00.000 |
| XC20090018 | ;Nii;John;Eva;Lisa;Alisa;Boke;Alisa; | 2020\-09\-16 00:00:00.000 |
我的尝试和想法:
这是一个旧系统的表,所以我无法更改结构。
而表逻辑是select * from WaitCheckBil where usrs like '%;' + @usr + ';%';获取用户的等待校验bil_NO。
我认为它可以将 ; usrs 列值拆分为 array ,然后在 user 列上加入 users 表,然后合并回 users 列。
但是我在这里遇到了麻烦,我不知道如何在sql-server 2008上实现逻辑。
在线演示链接:SQL Server 2017 | db<>fiddle
【问题讨论】:
标签: sql sql-server sql-server-2008