SQL查询词干分析器删除引号和结束字符

时间:2014-07-01 20:29:35

标签: sql sql-server

目前如果用户输入公司名称为“Bob's Place”,我的词干将删除并返回“Bob Place”。但是我遇到了sql数据端的问题

我想做的是带回与词干相匹配的公司,但在数据库方面有公司名称“Bob's Place”。

我可以删除's并比较“bob place”吗?

select * 
from ops..companyinfo with(nolock) 
where SUBSTRING(name, 0, charindex(CHAR(39),name))  like '%bob place%'

目前比较'bob'='bob place'

目前需要一个名为Mike's Place的数据库名称中的公司需要成为迈克的地方

2 个答案:

答案 0 :(得分:1)

如果你必须:

select * from ops..companyinfo with(nolock) 
where REPLACE(Name, '''s', '')  like '%bob place%'

但是从长远来看,使用参数化查询http://blogs.msdn.com/b/sqlphp/archive/2008/09/30/how-and-why-to-use-parameterized-queries.aspx或者甚至更好: http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/

请勿在不让他们知道您更改用户输入的情况下更改用户输入。

在某些情况下,如果您从保存的数据中生成发票并删除'保存名称时...'Bob的位置与Bobs合法不一样改变用户数据只是一种不好的形式。保存他们键入的内容。返回他们输入的内容。

答案 1 :(得分:0)

如果您不删除's并直接进行比较,可以尝试以下操作。

select 1 where replace('Bob''s Place','''','') = 'Bobs Place'

在你的情况下,它将是

select * 
from ops..companyinfo with(nolock) 
where replace(name,'''','')  = 'Bobs Place'