通配符查询%获取错误的数据

时间:2014-08-28 21:55:34

标签: sql sql-server

我正在尝试从我的数据库中选择以 srt_factor _ 开头的表格(在这种情况下只是前两个)。

我的表是:

srt_factor_20121119
srt_factor_20130430
srt_factorxyzk_20130813

我的查询错误地返回而不是前两个表,也是最后一个表(srt_factorxyzk_20130813)

Select (TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' 
AND TABLE_NAME LIKE 'srt_factor_%';

任何想法如何解决?

3 个答案:

答案 0 :(得分:3)

问题在于下划线,它在SQL中具有特殊含义(它与*通配符类似,但对于确切的一个字符)。你必须像这样逃避他们:

TABLE_NAME LIKE 'srt[_]factor[_]%'

有关使用通配符作为文字的信息,请参阅MSDN

答案 1 :(得分:2)

'_'是SQL Server中的通配符,表示一个字符。试试这个:

Select (TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND 
      TABLE_NAME LIKE 'srt[_]factor[_]%';

答案 2 :(得分:2)

尝试在括号中转义下划线。

LIKE 'srt_factor[_]%';

下划线用于匹配任何单个字符。