2014-07-01 34 views
0

當前如果用戶輸入公司名稱作爲「Bob's Place」,我的詞幹將刪除並返回「Bob Place」。然而,我有問題與SQL數據端SQL查詢詞幹刪除引號和結尾字符

我想要做的是帶回公司匹配詞幹,但在數據庫方面有公司名稱「鮑勃的地方」。我可以刪除並比較「bob位置」?

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

目前其比較「鮑勃」 =「鮑勃的地方」

目前需要的,如果在數據庫名稱的公司叫邁克的地方必須邁克地方

+1

不要用,而不是字符串操作使用paramaterized查詢鬥爭。 http://blogs.msdn.com/b/sqlphp/archive/2008/09/30/how-and-why-to-use-parameterized-queries.aspx但如果您必須使用「替換」功能 – xQbert

回答

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's Place與Bobs的地方在合法上不同一樣這僅僅是改變用戶數據的糟糕形式。保存他們所鍵入的內容。返回他們輸入的內容。

0

您可以嘗試下面的方式,以防您不刪除's並直接進行比較。

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

你的情況,這將是

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