代码之家  ›  专栏  ›  技术社区  ›  T.T.T.

如何在第一次出现LIKE之前找到列数?

  •  1
  • T.T.T.  · 技术社区  · 15 年前

       X       Y        Z 
    ------------------------
    |      |     A1  |     |
    ------------------------
    |      |     B2  |     |
    ------------------------
    |      |     C3  |     |
    ------------------------ -----Page 1
    |      |     D3  |     |
    ------------------------
    |      |     E4  |     |
    ------------------------
    |      |     F5  |     |
    ------------------------ -----Page 2
    |      |     G5  |     |
    ------------------------
    |      |     F6  |     |
    ------------------------
    |      |     G7  |     | -----Page 3  
    

    用户可以选择输入通配符搜索,即- %5 "

    我想返回到用户页面2(因为它第一次出现在后面的是5),或者找出在包含5的列之前有多少行 F5

    (SQLite与C API)

    2 回复  |  直到 15 年前
        1
  •  1
  •   Quassnoi    15 年前

    假设 MySQL ,结果集排序依据 X 是独一无二的:

    SELECT  COUNT(*)
    FROM    mytable
    WHERE   X <
            (
            SELECT  X
            FROM    mytable
            WHERE   y LIKE '%5'
            ORDER BY
                    X
            LIMIT 1
            )
    
        2
  •  1
  •   Fosco    15 年前

    declare @perPage int
    declare @searchString varchar(20)
    declare @countBefore int
    declare @firstMatch varchar(20)
    declare @resultPage int
    
    set @perPage = 3
    set @searchString = '%5'
    
    select @firstMatch = (select top 1 y from myTable where y like @searchString order by y)
    select @countBefore = (select count(*) from myTable where y < @firstMatch)
    select @resultPage = (@countBefore / @perPage) + 1