目前如果用户输入公司名称为“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的数据库名称中的公司需要成为迈克的地方
答案 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'