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
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]%'
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
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%'
Essaye ça:
SElECT * FROM STUDENTS WHERE LEN(CAST(STUDENTID AS VARCHAR)) > 0
Avec cela, vous obtenez les lignes où STUDENTID contient du texte