SQL Server split_string的子查询

hyrbngr7  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(147)

我在SQL Server中有两个表。一个保存字段的名称,另一个是ID的组合。我对更高级的SQL查询有点陌生,并且很难找到一个好的方法来完成这个。如果我使用javascript,我会将每个数据地址拆分成一个数组,并在每个数组上循环,以给予我想要的输出。不知道如何在SQL中完成。

t1

| 身份证|姓名|
| - ------|- ------|
| 无|经理|
| 1个|客户|
| 第二章|名字|
| 三个|姓氏|

t2

| 数据地址|
| - ------|
| 0.2 |
| 0.3 |
| 1.2 |
| 1.3 |
预期输出:
| 地址名|
| - ------|
| Manager.FirstName |
| Manager.LastName |
| Client.FirstName |
| Client.LastName |
我试过使用split_string来解析dataaddress中的每个字符串,但是我很难找到一个好的google搜索来完成这个任务。

sqougxex

sqougxex1#

请尝试以下解决方案。

SQL语言

-- DDL and sample data population, start
DECLARE @tbl1 TABLE (id INT PRIMARY KEY, name VARCHAR(20));
INSERT @tbl1 (id, name) VALUES
(0, 'Manager'),
(1, 'Client'),
(2, 'FirstName'),
(3, 'LastName');

DECLARE @tbl2 TABLE (dataaddress VARCHAR(20));
INSERT @tbl2 (dataaddress) VALUES
('0.2'),
('0.3'),
('1.2'),
('1.3');
-- DDL and sample data population, end

;WITH rs AS
(
    SELECT t1_id = PARSENAME(dataaddress,2)
        , t2_id = PARSENAME(dataaddress,1) 
    FROM @tbl2
)
SELECT addressname = CONCAT(t1.name, '.' , t2.name)
FROM @tbl1 AS t1 INNER JOIN rs ON t1.id = rs.t1_id
    INNER JOIN @tbl1 AS t2 ON t2.id = rs.t2_id;

产出

| 地址名|
| - ------|
| Manager.FirstName |
| Manager.LastName |
| Client.FirstName |
| Client.LastName |

相关问题