我无法使用类似的语句来处理空格和尾随通配符。 我的查询如下:
select * from Table where Field like 'Desc_%'
数据以空格分隔,例如Desc Top,Desc Bottom等。当我使用模式'Desc_%'时查询有效,但当我使用模式'Desc%'时查询无效。该字段为nvarchar(255)。
有什么想法吗?
编辑
结果是以制表符分隔的数据,当我从2008 Management Studio复制一个值时,它将选项卡转换为空格。愚蠢的错误。我确实喜欢[]提示,所以我给它标记了答案。谢谢大家,我会记得不相信网格结果中的副本。
答案 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) + '%'