SQLite
 sql >> Base de données >  >> RDS >> SQLite

Obtenir la position d'un caractère dans une chaîne dans SQLite avec Instr ()

Dans SQLite, vous pouvez utiliser le instr() fonction pour retourner la position d'un caractère donné dans une chaîne.

La fonction renvoie uniquement la position de la première occurrence du caractère (le cas échéant).

Si le caractère n'est pas trouvé, alors il renvoie 0.

Si l'un des arguments est NULL, alors il renvoie NULL.

Comment ça marche

L'instr() fonction accepte deux arguments. Le premier argument est la chaîne, et le deuxième argument est le caractère que vous souhaitez trouver dans cette chaîne.

Si les arguments sont tous les deux des BLOB, alors il renvoie un octet de plus que le nombre d'octets avant la première occurrence du deuxième argument, ou 0 s'il n'apparaît nulle part dans le premier argument.

La syntaxe ressemble à ceci :

inst(X,Y)
  • X est la chaîne
  • Y est le personnage

Exemple

Voici un exemple pour illustrer.

SELECT instr('Black cat', 'a');

Résultat :

3

Ici, je voulais l'emplacement de la lettre a .

Dans ce cas, la lettre apparaît deux fois, et instr() renvoie l'emplacement de la première occurrence.

Un exemple de base de données

Dans cet exemple, je vais utiliser le tableau suivant :

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Blue Widget    10.0      
3           Red Widget     10.0      
4           Green Widget   10.0      
5           Widget Stick   89.75     
6           Foo Cap        11.99     

Je vais rechercher le ProductName colonne pour une lettre.

SELECT 
  ProductName,
  instr(ProductName, 'd') 
FROM Products;

Résultat :

ProductName    instr(ProductName, 'd')
-------------  -----------------------
Widget Holder  3                      
Blue Widget    8                      
Red Widget     3                      
Green Widget   9                      
Widget Stick   3                      
Foo Cap        0                               

Notez que la dernière ligne n'avait pas la lettre et donc 0 a été renvoyé pour cette ligne.

Valeurs NULLES

Comme mentionné, si l'un des arguments est NULL, alors NULL est renvoyé.

SELECT 
  instr(NULL, 'a'),
  instr('Black cat', NULL);

Résultat :

instr(NULL, 'a')  instr('Black cat', NULL)
----------------  ------------------------