Mudassar Farooq
Mudassar Farooq

Reputation: 106

what's wrong with this sql query?

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)

giving following error after compile.

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

but when i write any string in contain function it works like.

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) 

why it is not working with string column name (ProductDetailObjects.AdminInnerText????)

Upvotes: 0

Views: 93

Answers (4)

sll
sll

Reputation: 62494

Add space before ELSE

'Condition True'Else 

EDIT:

Update it like this:

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

Upvotes: 2

Alex K.
Alex K.

Reputation: 175766

You cannot use a field name as the 2nd argument of CONTAINS, only a literal string or variable; its designed to look for a specific search clause across all values of the column(s) in its first argument.

Upvotes: 1

Quassnoi
Quassnoi

Reputation: 425331

You can only use a constant as a search query in CONTAINS.

Upvotes: 4

Marc B
Marc B

Reputation: 360602

Possibly this:

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

Upvotes: 1

Related Questions