1

我有 varchar Id 如下所示,

'1','2','3' etc..

之后我以逗号分隔,然后将 Id 转换为 int

SELECT  FIRSAT_PERSONELLER_ID,
cast(LTRIM(C.value('n[1]','VARCHAR(50)')) as int )AS item1
FROM (SELECT *,
X = CAST('<myxml><nodes><n>' + REPLACE(FIRSAT_PERSONELLER_ID,',','</n></nodes><nodes> <n>') + 
'</n></nodes></myxml>' AS XML)
FROM FIRSATLAR 
)t
CROSS APPLY X.nodes('/myxml/nodes') Cols (C)

结果如下:

item1:

1

2

3

我想将上面的“item1”ID 与我的用户表匹配。我尝试了下面的代码,但它不起作用。我想查看用户名。

SELECT username
FROM UserTable
Where UserId=item1Id(İtem1Id does not appear)

我也不确定 Id 值是 int 还是 varchar。

而不是上面的查询,我需要写什么?

4

1 回答 1

0

tSQL 看起来像这样:

SELECT username
FROM UserTable a
    join
    (SELECT  FIRSAT_PERSONELLER_ID,
            cast(LTRIM(C.value('n[1]','VARCHAR(50)')) as int )AS item1
            FROM (SELECT *,
            X = CAST('<myxml><nodes><n>' + REPLACE(FIRSAT_PERSONELLER_ID,',','</n></nodes><nodes> <n>') + 
            '</n></nodes></myxml>' AS XML)
            FROM FIRSATLAR 
            )t
            CROSS APPLY X.nodes('/myxml/nodes') Cols (C)
    ) b on a.UserId = b.item1

希望这可以帮助。

于 2013-10-02T14:30:11.797 回答