多个逗号取消参数

时间:2018-03-08 21:55:18

标签: sql sql-server xml sql-server-2012

使用this代码作为基础,我可以使用此示例作为多个条件的AND,使用多个INNER JOIN:

public static void main(String[] args) {
    byte[] byteArray = null;

    List<Group> groups = Group.getGroupsOfZeros(byteArray);
    GroupsBySize groupsBySize = new GroupsBySize(groups);

    int index = 12;
    int atLeastSize = 5;
    Group g = groupsBySize.getNearestGroupOfAtLeastSize(index, atLeastSize);

    System.out.println("nearest group is (" + g.x1 + ":" + g.x2 + ") of size " + g.size);
}

我似乎无法解决OR函数所需的连接

1 个答案:

答案 0 :(得分:1)

尝试类似......

Declare   @Ids varchar(50)    = '1,2,3,5,4,6,7,98,234'
        , @Levels varchar(50) = '0,3';

SELECT  a.* 
FROM    [AdventureWorks2012].[HumanResources].[Employee] a
Where a.[BusinessEntityID]  
            IN (
                SELECT  CAST(RTRIM(LTRIM(Split.a.value('.', 'VARCHAR(100)'))) AS INT) IDs
                FROM (
                        SELECT Cast ('<X>' 
                                    + Replace(@Ids, ',', '</X><X>') 
                                    + '</X>' AS XML) AS Data
                        ) AS t CROSS APPLY Data.nodes ('/X') AS Split(a) 
                    )
OR a.[OrganizationLevel]   --<-- You can "OR" or "AND" here 
            IN  (
            SELECT CAST(RTRIM(LTRIM(Split.a.value('.', 'VARCHAR(100)'))) AS INT) [Levels]
                 FROM (
                        SELECT Cast ('<X>' 
                                    + Replace(@levels, ',', '</X><X>') 
                                    + '</X>' AS XML) AS Data
                        ) AS t CROSS APPLY Data.nodes ('/X') AS Split(a) 
                    )