我有一个名为studentID
的列,但我有数百万条记录,不知何故,应用程序在列中输入了一些任意文本。
我如何搜索:
SELECT *
FROM STUDENTS
WHERE STUDENTID CONTAINS TEXT
答案 0 :(得分:27)
不考虑数据库建模问题。 我想你可以试试
SELECT * FROM STUDENTS WHERE ISNUMERIC(STUDENTID) = 0
但ISNUMERIC
为任何看似数字的值(包括-1.0e5
如果您想要排除仅限数字的学生,请尝试使用
之类的内容SELECT * FROM STUDENTS WHERE STUDENTID LIKE '%[^0-9]%'
答案 1 :(得分:5)
尝试LIKE构造,例如(假设StudentId是Char,VarChar等。)
select *
from Students
where StudentId like '%' || TEXT || '%' -- <- TEXT - text to contain
答案 2 :(得分:4)
试试以下脚本:
以下代码仅在studentid列数据类型为varchar
时有效SELECT * FROM STUDENTS WHERE STUDENTID like '%Searchstring%'
答案 3 :(得分:0)
试试这个:
SElECT * FROM STUDENTS WHERE LEN(CAST(STUDENTID AS VARCHAR)) > 0
通过这个,您可以获得STUDENTID包含文本的行
答案 4 :(得分:-2)
假设STUDENTID包含一些您已经知道的字符或数字,即“搜索字符串”,那么下面的查询将为您工作。
您可以尝试以下方法:
select * from STUDENTS where CHARINDEX('searchstring',STUDENTID)>0
我认为这是最快,最简单的一个。