Tsql 选择两个字符串符之间的数据范围

Tsql 选择两个字符串符之间的数据范围,tsql,Tsql,我想选择两个字符串值AAA和DDD之间的数据。有数据超出AAA和DDD的范围,我不想要。任何想法。谢谢 根据我对你的问题的理解,看起来你想要AAA和DDD之间的行 桌子 质疑 您实际要选择哪些行?在“AAA”和“DDD”之间定义了什么?我在您的示例中没有看到任何介于这些值之间的字符串。谢谢。你的语法符合我的要求。 DECLARE @t TABLE (Id INT, FileN VARCHAR(25), Col1 VARCHAR(255)) INSERT INTO @t VALUES (1,'ee

我想选择两个字符串值AAA和DDD之间的数据。有数据超出AAA和DDD的范围,我不想要。任何想法。谢谢


根据我对你的问题的理解,看起来你想要AAA和DDD之间的行

桌子

质疑


您实际要选择哪些行?在“AAA”和“DDD”之间定义了什么?我在您的示例中没有看到任何介于这些值之间的字符串。谢谢。你的语法符合我的要求。
DECLARE @t TABLE (Id INT, FileN VARCHAR(25), Col1 VARCHAR(255))
INSERT INTO @t VALUES
(1,'eee.doc','AAA'),(3,'eee.doc','234'),(4,'eee.doc','tt2'),(7,'eee.doc','wwpp'), 
(8,'eee.doc','DDD'),(9,'eee.doc','tyyyuui'),(10,'ddd.doc','43ffhgd'),(12,'ddd.doc','AAA'),
(14,'ddd.doc','rtty'),(15,'ddd.doc','ppii'),(16,'ddd.doc','hhcc'),(18,'ddd.doc','7ghij'),
(20,'ddd.doc','DDD')
SELECT t.*
FROM    @t t
    INNER JOIN (    SELECT  b.*
                    FROM    (   SELECT a.*, LEAD(Id, 1 , NULL) OVER (PARTITION BY FileN ORDER BY a.Id) NextId
                                FROM    (   SELECT  Id, FileN, Col1
                                            FROM    @t t
                                            WHERE   Col1 IN ('AAA','DDD')       
                                        ) a
                            ) b
                    WHERE b.Col1 = 'AAA'
                ) r
        ON t.Id > r.Id  AND t.Id < r.NextId 
ORDER BY 1
Id  FileN     Col1
========================
3   eee.doc   234
4   eee.doc   tt2
7   eee.doc   wwpp
14  ddd.doc   rtty  
15  ddd.doc   ppii
16  ddd.doc   hhcc
18  ddd.doc   7ghij