5

我无法让 like 语句与空格和尾随通配符一起使用。我的查询如下:

select * from Table where Field like 'Desc_%'

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

有任何想法吗?

编辑

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

4

3 回答 3

3

使用方括号 '[' & ']' 设置要匹配的单字符类。在您的情况下,SQL 应如下所示:“select * from Table where Field like 'Desc[ ]%'”

编辑:添加示例,链接

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)

这篇文章。

于 2010-07-19T17:23:22.503 回答
0

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

SELECT * FROM Table WHERE Field Like 'Desc' + CHAR(32) + '%'
于 2010-07-19T17:39:46.637 回答
0

由于下划线是单字符通配符,而百分比是多字符通配符,它​​们是相同的( "%" 和 "_%" )。就好像您要求两个连续的通配符。不确定我是否理解您的问题,但我并不感到惊讶它的行为与您期望的方式不同。

于 2010-07-19T17:24:43.390 回答