2012-06-29 101 views
2

你好我試圖運行在SQL此查詢,但它是不是給我的結果:SQL像子句逃逸單引號

SELECT  COUNT(*) AS Expr1 
FROM   restaurantData 
WHERE  (restaurantInfo LIKE '''%' + 'xyz' + '%''') OR 
         (restaurantName LIKE '''%' + 'xyz' + '%''') OR 
         (restaurantDescription LIKE '''%' + 'xyz' + '%''') 

我restaurantName柱值XYZ餐廳

這裏一些示例數據

+0

它給你什麼? – Jake1164

+0

它給我0 – Amrit

+3

爲什麼不只是:像'%瓜'等? – davek

回答

4

爲什麼要多加單引號?

SELECT 
      COUNT(*) AS Expr1 
    FROM restaurantData 
    WHERE  (restaurantInfo LIKE '%Guu%') 
OR (restaurantName LIKE '%Guu%') 
    OR (restaurantDescription LIKE '%Guu%') 

它看起來像你試圖動態構建它;如果是這樣的話,那麼我建議你發佈你如何構建它。

+0

這工作我從來沒有用戶喜歡子句之前,所以我不知道的語法 – Amrit

2

當在此執行字符串連接是你用的是什麼,比較的結果來:

'%Guu%' 

當你把兩個單引號字符陸續在SQL字符串,它是「逃跑」,所以''用作'。如果您的數據集包括引號字符,您將匹配的東西,如:

restaurantInfo 
-------------- 
'ABCGuuDEF' 
'xyzGuuamn' 

我相信你,而不是想做的事:

'%''' + 'Guu' + '''%' 

這將匹配

restaurantInfo 
-------------- 
Asdf'Guu' 
'Guu'Asdf 

或者,如果你只是在尋找Guu沒有任何報價,只是做

'%' + 'Guu' + '%' 

將匹配

restaurantInfo 
-------------- 
Guu 
GuuAbcd 
AbcdGuu 
Asdf'Guu' 
'Guu'Asdf 
+0

我想做的過程'(SELECT COUNT(*)從dealData WHERE dealInfo LIKE'%'+ @search_text +'%'或dealName LIKE'%'+ @search_text +'%'或dealDescription LIKE'%'+ @search_text +'%'GROUP BY dealId)'這不會給我我想要的東西,所以我想我需要單引號前後參數@search_text – Amrit

+0

如果您在問題中包含表格中的一些示例數據,我們可能會使其更清晰。 –

+0

所以我不知道如何添加單引號爲我的參數,使它看起來像%'古'% – Amrit