2014-08-28 35 views
1

我想从我的数据库中选择表格,他们以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_%'; 

任何想法如何解决呢?

回答

2

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

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

的问题是在在SQL特殊含义下划线(它就像*通配符,但对于确切的一个字符)。你要逃避他们是这样的:

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

MSDN在使用通配符的文字。

2

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

LIKE 'srt_factor[_]%'; 

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