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

Comment obtenir des valeurs qui ne contiennent pas de nombres dans SQL Server

Si vous avez une colonne dans une table de base de données SQL Server qui contient des données de caractères, mais que certaines lignes contiennent également des nombres dans ces données, vous pouvez utiliser la technique suivante pour renvoyer uniquement les lignes qui ne contiennent pas de nombres.

Les nombres peuvent être représentés par des mots et d'autres symboles, mais pour les besoins de cet article, "nombre" signifie "chiffre numérique". Nous trouvons donc des valeurs qui ne contiennent aucun chiffre numérique.

Exemple

Supposons que nous ayons une colonne avec les données suivantes :

SELECT ProductName 
FROM Products;

Résultat :

+-------------------------------------+
| ProductName                         |
|-------------------------------------|
| Left handed screwdriver             |
| Long Weight (blue)                  |
| Long Weight (green)                 |
| Smash 2000 Sledgehammer             |
| Chainsaw (includes 3 spare fingers) |
| Straw Dog Box                       |
| Bottomless Coffee Mugs (4 Pack)     |
| Right handed screwdriver            |
+-------------------------------------+

Cette colonne contient des données de caractères, mais certaines lignes contiennent des nombres dans ces données de caractères.

Nous pouvons utiliser la requête suivante pour renvoyer uniquement les lignes qui ne le font pas contenir des nombres :

SELECT ProductName 
FROM Products
WHERE ProductName NOT LIKE '%[0-9]%';

Résultat :

+--------------------------+
| ProductName              |
|--------------------------|
| Left handed screwdriver  |
| Long Weight (blue)       |
| Long Weight (green)      |
| Straw Dog Box            |
| Right handed screwdriver |
+--------------------------+

Comme prévu, seules les lignes qui ne contiennent pas de nombres sont renvoyées.

Nous pouvons facilement le retourner et changer NOT LIKE à LIKE afin de ne renvoyer que les lignes qui font contenir des nombres.