2010-07-19 71 views
5

我无法得到类似的声明来处理空间和尾随通配符。 我查询去如下:tsql使用通配符和尾随空格?

select * from Table where Field like 'Desc_%'

的数据是空间分隔的,例如,说明顶部,底部说明等。查询在我使用模式'Desc_%'时起作用,但当我使用模式'Desc%'时不起作用。该字段是nvarchar(255)。

任何想法?

EDIT

原来的数据是制表符分隔的并且当我从2008 Management Studio中复制的值转换它的标签空间。愚蠢的错误。我喜欢[]提示,所以我将其标记为答案。谢谢大家,我会记住不要相信网格结果中的副本。

+0

是否有一个特定的原因为什么“喜欢”的说明%''“不会工作? – AllenG 2010-07-19 17:13:00

+0

@AllenG - “LIKE Desc%”不会将自己限制为“Desc”(Desc-blank),它会接收任何以“Desc”开头的东西 – DaveE 2010-07-19 17:16:07

+0

@DaveE - 是的,它会的,但如果唯一的东西可能在他的专栏中有'Desc Top','Desc Bottom','Desc InsideOut'等,并且从来不是'Charlemaine的后裔',使用Like Desc%没有实际的障碍。如果他的桌子确实包含了其他的价值,当然,那么他会遇到问题。 – AllenG 2010-07-19 17:29:08

回答

3

使用括号'['&']'设置单字符类以匹配。在你的情况下,SQL应该是这样的:“选择从表*,其中现场像‘说明[]%’”

编辑:加样,链接

CREATE TABLE #findtest (mytext varchar(200)) 

insert #findtest VALUES ('Desc r') 
insert #findtest VALUES ('Descr') 

select * from #findtest where mytext like 'Desc[ ]%' 

DROP TABLE #findtest 

(1 row(s) affected) 

(1 row(s) affected) 
mytext 
-------- 
Desc r 

(1 row(s) affected) 

this文章。

+0

感谢您的提示。这工作。我很抱歉浪费你们时间。数据有一个标签不是空格。我从Management Studio网格复制了该值,并将该选项卡转换为空格。 – Steve 2010-07-19 18:44:59

0

由于下划线是单个字符通配符,百分比是多字符通配符,它​​们是相同的(“%”和“_%”)。这就好像你要求连续两个通配符。不知道我是否理解你的问题,但我并不感到惊讶,它不像你期望的那样行事。

0

考虑明确指出你想要一个空格,使用它的ASCII值吗?

SELECT * FROM Table WHERE Field Like 'Desc' + CHAR(32) + '%'