2010-09-10 2 views
1

Trie colonne YComment puis-je trouver le nombre de colonnes avant la première occurrence de LIKE?

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

utilisateur a l'option d'entrer dans la recherche de wild card, à savoir: - « %5 »

Je voudrais revenir à la page d'utilisateur 2 (car il a la première occurrence de quelque chose suivi par 5.) OU savoir combien de lignes il y a avant que la colonne contenant F5

(avec SQLite API C)

Répondre

1

en supposant MySQL, resultset commandés par X et X est unique:

SELECT COUNT(*) 
FROM mytable 
WHERE X < 
     (
     SELECT X 
     FROM mytable 
     WHERE y LIKE '%5' 
     ORDER BY 
       X 
     LIMIT 1 
     ) 
+0

Trouvé un problème avec cela, des suggestions - http://stackoverflow.com/questions/3705238/how-do-i-get-like-and-count-to-return-the-number-of-rows-less-than-a- valeur-non-in –

1

En supposant MSSQL, voici une façon détournée ce genre d'étapes dans la logique .. laissez-moi savoir si elle ne permet pas:

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 
Questions connexes