如何查询数据库的时候忽略Html标签--模糊查询

lgs_div 阿树程序员  2017-11-07 02:08:30
现在编辑网页的内容基本可以使用富文本编辑器来帮忙达到预期的效果了。
但是感觉还是有点不足,那就是当你使用模糊查询搜索数据库的时候,字段会匹配到HTML的标签上。
如:

SELECT * FROM table WHERE content(某字段) like '%AR%'

然后content的值可能是一段包含HTML的字符串:<a href="###" target="_blank">即将进行查询</a>
值得一提:此时AR与Target已经匹配上了,但这并不是我们要的结果
那么我们该怎样去规避这种情况呢???

...全文
574 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lgs_div 2017-12-16


可不可以实现 查询哪一条数据 就去匹配这一条数据的content字段呢???
  • 打赏
  • 举报
回复
lgs_div 2017-12-16
谢谢帮忙 实在是麻烦了.
我现在将sql语句移到存储过程中 如下

对@str进行赋值的时候 如果不指定Top 1 则会报那个子查询的错误
如果指定了Top 1 那么接下来的查询都是以 top 1 查出来的数据(contents) 去比较搜索值 这似乎就达不到预期的效果了.....
  • 打赏
  • 举报
回复
lgs_div 2017-11-07
嗯 谢谢 可以了
  • 打赏
  • 举报
回复
二月十六 2017-11-07
引用 5 楼 lgs_div 的回复:
那除了用存储过程还能直接写Sql吗??? CREATE FUNCTION 貌似只能在存储过程中使用
不是; CREATE FUNCTION是简历函数,建立之后就可以调用了;
  • 打赏
  • 举报
回复
lgs_div 2017-11-07
那除了用存储过程还能直接写Sql吗??? CREATE FUNCTION 貌似只能在存储过程中使用
  • 打赏
  • 举报
回复
lgs_div 2017-11-07
引用 3 楼 sinat_28984567 的回复:
[quote=引用 1 楼 lgs_div 的回复:] 目前想到的方案:在增加一个字段,一个保存包含HTML的文本,一个用来保存纯文本,当搜索的时候就查询纯文本字段即可; 不过感觉还是太麻烦了,不知大家有没有更简便的方法
这个方法挺好,空间换效率,用冗余的方式来实现快速搜索[/quote] 哈哈 谢谢啦
  • 打赏
  • 举报
回复
二月十六 2017-11-07
引用 1 楼 lgs_div 的回复:
目前想到的方案:在增加一个字段,一个保存包含HTML的文本,一个用来保存纯文本,当搜索的时候就查询纯文本字段即可; 不过感觉还是太麻烦了,不知大家有没有更简便的方法
这个方法挺好,空间换效率,用冗余的方式来实现快速搜索
  • 打赏
  • 举报
回复
二月十六 2017-11-07
试试这样,先把html标签去掉,然后再进行比对:
CREATE FUNCTION [dbo].[f_trimstr] ( @str NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS
BEGIN
WHILE CHARINDEX('<', @str) > 0
SET @str = STUFF(@str, CHARINDEX('<', @str),
CHARINDEX('>', @str) - CHARINDEX('<', @str) + 1,
'')
RETURN @str;
END


DECLARE @str NVARCHAR(MAX)='<a href="###" target="_blank">即将进行查询</a>'
SELECT @str WHERE [dbo].[f_trimstr](@str) LIKE '%AR%'
SELECT @str WHERE [dbo].[f_trimstr](@str) LIKE '%即将%'


  • 打赏
  • 举报
回复
lgs_div 2017-11-07
目前想到的方案:在增加一个字段,一个保存包含HTML的文本,一个用来保存纯文本,当搜索的时候就查询纯文本字段即可; 不过感觉还是太麻烦了,不知大家有没有更简便的方法
  • 打赏
  • 举报
回复
相关推荐
发帖
应用实例
加入

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2017-11-07 02:08
社区公告
暂无公告