Obtenir des loggings qui ne sont pas terminés par un mot spécifique

J'ai un champ avec des valeurs par exemple:

323.12.444.1 55.1231 4543.432.431 6.1 456.3234.54353.1124.1 321.3.425 2.3.1 5345.43.1 432.5646.2 

Donc, pour les loggings terminés par .1 doit être recueilli. Quelle devrait être la requête?

Cela devrait être plus rapide que LIKE

 SELECT * FROM table WHERE RIGHT(fieldname,2)='.1' 

Le LIKE avec un % au début est quelque chose que l'on devrait éviter si possible …

 select * from table where fieldname like '%.1' 

Je suggère d'utiliser ceci:

 SELECT * FROM YourTable WHERE REVERSE(SUBSTRING(REVERSE(col1),1,CHARINDEX('.',REVERSE(col1))-1)) = '1' 

Vous pouvez find n'importe quelle string dont vous avez besoin sans changer les parameters dans la requête:

 ;WITH YourTable AS ( SELECT * FROM (VALUES ('323.12.444.1'), ('55.1231'), ('4543.432.431'), ('6.1'), ('456.3234.54353.1124.1'), ('321.3.425'), ('2.3.1'), ('5345.43.1'), ('432.5646.2') ) as t(col1) ) SELECT * FROM YourTable WHERE REVERSE(SUBSTRING(REVERSE(col1),1,CHARINDEX('.',REVERSE(col1))-1)) = '431' 

Sortie:

 4543.432.431