2011-07-22 139 views
0
UPDATE UserListColumnData 
set UserListColumnValue = (case when Contains(ProductDetailObjects.InnerText, **ProductDetailObjects**.AdminInnerText) then 
'Condition True'Else 'Condition False' End) 
FROM   VariableDataObjectMaping INNER JOIN 
         UserListColumnData ON VariableDataObjectMaping.UserListColumnID = UserListColumnData.UserListColumnID INNER JOIN      
         UserListColumns ON UserListColumnData.UserListColumnID=UserListColumns.UserListColumnID INNER JOIN      
         ProductDetailObjects ON VariableDataObjectMaping.ObjectId = ProductDetailObjects.ObjectID INNER JOIN 
         ProductDetail ON ProductDetailObjects.ProductDetailID = ProductDetail.ProductDetailID INNER JOIN 
         Products ON ProductDetail.ProductID = Products.ProductID 
WHERE  (Products.ProductID = 275) 

編譯後出現如下錯誤。這個sql查詢有什麼問題?

Msg 102, Level 15, State 1, Line 2 
Incorrect syntax near 'ProductDetailObjects'. 

但是當我在包含函數中編寫任何字符串它的作品就像。

UPDATE UserListColumnData 
set UserListColumnValue = (case when Contains(ProductDetailObjects.InnerText, 'aab') then 
'Condition True'Else 'Condition False' End) 
FROM   VariableDataObjectMaping INNER JOIN 
         UserListColumnData ON VariableDataObjectMaping.UserListColumnID = UserListColumnData.UserListColumnID INNER JOIN      
         UserListColumns ON UserListColumnData.UserListColumnID=UserListColumns.UserListColumnID INNER JOIN      
         ProductDetailObjects ON VariableDataObjectMaping.ObjectId = ProductDetailObjects.ObjectID INNER JOIN 
         ProductDetail ON ProductDetailObjects.ProductDetailID = ProductDetail.ProductDetailID INNER JOIN 
         Products ON ProductDetail.ProductID = Products.ProductID 
WHERE  (Products.ProductID = 275) 

爲什麼它不與字符串列名(ProductDetailObjects.AdminInnerText ????)工作

+1

爲什麼周圍的表名ProductDetailObjects.AdminInnerText有星號? –

+0

我提到自己,因爲這是查詢編譯提供錯誤的關鍵。 –

+0

查看我的更新回答 – sll

回答

2

添加空間之前,ELSE

'Condition True'Else 

編輯:

更新這樣的:

CASE 
     WHEN ProductDetailObjects.InnerText 
     LIKE '%' + ProductDetailObjects.AdminInnerText + '%'  
     THEN 'Condition True' 
     ELSE 'Condition False' 
END 
+0

它不是空間問題。當我用一些字符串替換ProductDetailObject.AdminInnerText時,它的工作,否則它會給出一個錯誤。 –

+0

@Mudassar Farooq:查看我的回答更新部分 – sll

1

可能這:

'Condition True'Else 'Condition False' End) 
       ^--- missing a space here 
4

您只能使用一個常數作爲CONTAINS搜索查詢。

1

不能使用字段名稱作爲CONTAINS的第二個參數,只能使用文字字符串或變量;其設計用於在第一個參數中查找列(s)中所有值的特定搜索子句。

+0

好吧然後如何解決這個問題??? –

+0

搜索子句是什麼樣子的,他們必須是FTS子句嗎? –