如何搜索像'播放器'这样的单词使用类似'%'运算符查询。它适用于'P,'Pl','Pla','播放','播放','Playe,'播放器'..但是不适用于'玩家','播放器'。如果我们添加额外的字符串不起作用 [英] How To Search A Word Like 'Player' I Used Query Using Like'%' Operator.It Works On 'P,'Pl','Pla','Play','Play','Playe,'Player'..But Not Works On 'Players','Playerd'.If We Add A Extra String Not Work
问题描述
我有一个带有搜索选项的列表视图,其中包含三个字段名称,评论,说明。
我已使用此查询实现了搜索选项。
I have a listview with search options with three fields name,comment,description.
I have implemented the search options using this query.
SELECT OrganizationID,
Name,
DescriptionShort,
DescriptionLong, Comment,
DateUpdated,
FROM t_Organization
where t_Organization.Name like '%'+@name+'%'
or t_Organization.DescriptionShort like '%'+@name+'%'
or t_Organization.DescriptionLong like '%'+@name+'%'
or t_Organization.Comment like '%'+@name+'%'
ORDER BY Name
完美无缺。但是如果我添加一个额外的字符串,那么就没有记录了。
喜欢'玩家'搜索完美
喜欢'玩'搜索完美
喜欢'pla'搜索完美
喜欢'pl'搜索完美
喜欢'p'搜索完美
但'玩家',不工作
喜欢'playerw'不工作
喜欢玩不行。
表示我们添加额外的st它不起作用。
我该怎么做?
我需要全部。
搜索将发生是因为游戏很常见..
请帮帮我....我怎么能这样做?
It works perfectly.but if when I add a extra string then no records are fetching.
like 'player' search perfectly
like 'play' search perfectly
like 'pla' search perfectly
like 'pl' search perfectly
like 'p' search perfectly
but 'Players' , not work
like 'playerw' not work
like 'playing' not work.
means when we add a extra string it does not work .
How can I do this?
I need all.
search will happen because play is common..
please help me....how can i do this?
推荐答案
最后我做到了这一点使用此查询
finally i have done this using this query
ALTER PROC [dbo].[GetDetails](@SearchName VARCHAR(200))
AS
BEGIN
IF ISNULL(@SearchName,'') = ''
BEGIN
SELECT * FROM t_Organization
END
ELSE
BEGIN
DECLARE @Count INT;
DECLARE @i INT = 0
WHILE (@i) < LEN(@SearchName)
BEGIN
SELECT @Count = COUNT(*) FROM t_Organization
WHERE (Name LIKE '%' + SUBSTRING(@SearchName,1,LEN(@SearchName) - @i) + '%')
OR (DescriptionShort LIKE '%' + SUBSTRING(@SearchName,1,LEN(@SearchName) - @i) + '%')
OR (DescriptionLong LIKE '%' + SUBSTRING(@SearchName,1,LEN(@SearchName)- @i) + '%')
OR (Comment LIKE '%' + SUBSTRING(@SearchName,1,LEN(@SearchName) - @i) + '%')
IF @Count > 0
BEGIN
SELECT * FROM t_Organization
WHERE (Name LIKE '%' + SUBSTRING(@SearchName,1,LEN(@SearchName) - @i) + '%')
OR (DescriptionShort LIKE '%' + SUBSTRING(@SearchName,1,LEN(@SearchName) - @i) + '%')
OR (DescriptionLong LIKE '%' + SUBSTRING(@SearchName,1,LEN(@SearchName) - @i) + '%')
OR (Comment LIKE '%' + SUBSTRING(@SearchName,1,LEN(@SearchName) - @i) + '%')
order by Name
END
SET @i = @i + 1
END
END
--DROP TABLE t_Organization
END
搜索完整模式使用'%your word%'
To search complete Pattern Use '%your word%'
我认为你的搜索字符串应该用单引号括起来:
I think your search-strings should be enclosed between single quotes:
where t_Organization.Name like '''%'+@name+'%'''
or t_Organization.DescriptionShort like '''%'+@name+'%'''
or t_Organization.DescriptionLong like '''%'+@name+'%'''
or t_Organization.Comment like '''%'+@name+'%'''
希望这会有所帮助。
Hope this helps.
这篇关于如何搜索像'播放器'这样的单词使用类似'%'运算符查询。它适用于'P,'Pl','Pla','播放','播放','Playe,'播放器'..但是不适用于'玩家','播放器'。如果我们添加额外的字符串不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!