web-dev-qa-db-fra.com

Vérifier si une colonne contient du texte en utilisant SQL

J'ai une colonne qui s'appelle studentID, mais j'ai des millions d'enregistrements et d'une manière ou d'une autre l'application a entré du texte arbitraire dans la colonne.

Comment puis-je rechercher:

SELECT *
FROM STUDENTS
WHERE STUDENTID CONTAINS TEXT
10
PriceCheaperton

Laissant de côté les problèmes de modélisation de base de données. Je pense que vous pouvez essayer

SELECT * FROM STUDENTS WHERE ISNUMERIC(STUDENTID) = 0

Mais ISNUMERIC renvoie 1 pour toute valeur qui semble numérique, y compris des éléments tels que -1.0e5

Si vous souhaitez exclure les valeurs idiotes des étudiants, essayez par exemple: 

SELECT * FROM STUDENTS WHERE STUDENTID LIKE '%[^0-9]%'
26
Michael J Swart

Essayez comme la construction, par exemple. (en supposant que StudentId est Char, VarChar etc.)

  select * 
    from Students
   where StudentId like '%' || TEXT || '%' -- <- TEXT - text to contain
4
Dmitry Bychenko

Essayez juste le script ci-dessous:

Le code ci-dessous ne fonctionne que si le type de données de colonne studentid est varchar

SELECT * FROM STUDENTS WHERE STUDENTID like '%Searchstring%'
4
bgs

Essaye ça:

SElECT * FROM STUDENTS WHERE LEN(CAST(STUDENTID AS VARCHAR)) > 0

Avec cela, vous obtenez les lignes où STUDENTID contient du texte

0
jhonatan299