tsql使用与通配符和尾随空格一样?

时间:2010-07-19 17:06:05

标签: tsql wildcard space sql-like

我无法使用类似的语句来处理空格和尾随通配符。 我的查询如下:

select * from Table where Field like 'Desc_%'

数据以空格分隔,例如Desc Top,Desc Bottom等。当我使用模式'Desc_%'时查询有效,但当我使用模式'Desc%'时查询无效。该字段为nvarchar(255)。

有什么想法吗?

编辑

结果是以制表符分隔的数据,当我从2008 Management Studio复制一个值时,它将选项卡转换为空格。愚蠢的错误。我确实喜欢[]提示,所以我给它标记了答案。谢谢大家,我会记得不相信网格结果中的副本。

3 个答案:

答案 0 :(得分:3)

使用括号'['& ']'设置一个匹配的单字符类。在你的情况下,SQL应该如下所示:“select * from Table where field like'Desd []%'”

编辑:添加样本,链接

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文章。

答案 1 :(得分:0)

由于下划线是单个字符通配符,而百分号是多字符通配符,因此它们是相同的(“%”和“_%”)。就像你要求连续两个通配符一样。不确定我是否理解你的问题,但我并不感到惊讶,因为它没有按照你期望的方式行事。

答案 2 :(得分:0)

考虑使用其ASCII值明确说明您想要一个空格?

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