2015-06-17 41 views
-1

我想設置字段爲「1」,具體取決於名稱在開頭是否有「LC」,但我的語法看起來不正確爲某字符串設置爲「1」

SET @r_sql = ' UPDATE mytables'[email protected]_mystuf+' 
       SET  feild1= ''1'' 
       WHERE category = ''4'' 
       AND name LIKE ''LC%';      

exec (@r_sql); 

感謝

+1

工作是列真的叫feild1或者是一個錯字?類別是字符串嗎? Field1是一個字符串?爲什麼LC%不以雙撇號結尾?如果您選擇該值,您應該明白爲什麼它的格式不正確。 – UnhandledExcepSean

+0

另外,什麼是@ r_mystuf?是表名的那部分?並且在結尾處需要一些額外的引號 – Tanner

+1

「LC%'後缺少單引號。它應該是'..........''LC%''''' – Wanderer

回答

0

使用LEFT而不是LIKE

代替LIKE ''LC%'使用LEFT(name, 2) = 'LC'

而且如前所述引號需要整理出來。

+0

編輯。答案的解決方案仍然有效和正確。 – Hysteria86

0

整個字符串將它

set @r_sql = 'update tablename' + @r_mystuf + ' set field1 = ' + '1' + ' where category = ' + '4' + ' and name like ''' +'LC%' +''''; 

同樣的事情與我的AdventureWorks數據庫

declare @var nvarchar(121); 
declare @r_mystuf nvarchar(11); 
declare @mystuf nvarchar(11); 
set @r_mystuf = 'Person'; 

set @var = N'update Person.' + @r_mystuf + ' set PersonType = ' + 'EE' + ' where BusinessEntityID = ' + '1' + ' and FirstName like ''' +'ke%' +''''; 
print @var;