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