检查列是否包含使用SQL的文本

时间:2013-06-26 14:01:00

标签: sql sql-server tsql

我有一个名为studentID的列,但我有数百万条记录,不知何故,应用程序在列中输入了一些任意文本。

我如何搜索:

SELECT *
FROM STUDENTS
WHERE STUDENTID CONTAINS TEXT

5 个答案:

答案 0 :(得分:27)

不考虑数据库建模问题。 我想你可以试试

SELECT * FROM STUDENTS WHERE ISNUMERIC(STUDENTID) = 0

ISNUMERIC为任何看似数字的值(包括-1.0e5

)返回1

如果您想要排除仅限数字的学生,请尝试使用

之类的内容
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

我认为这是最快,最简单的一个。