我想這樣做來運行SQL 2008的查詢:SQL ESCAPE「」
@query varchar(max)
SET @query = 'SELECT * FROM Table WHERE [Name] = ' 'Karl' ' '
EXEC(@query)
的問題是,由於某種原因,周圍'Karl'
撇號沒有得到逃脫,即查詢的執行過程...WHERE [Name] = Karl
並失敗。
任何人有一個建議?
感謝
卡爾
我想這樣做來運行SQL 2008的查詢:SQL ESCAPE「」
@query varchar(max)
SET @query = 'SELECT * FROM Table WHERE [Name] = ' 'Karl' ' '
EXEC(@query)
的問題是,由於某種原因,周圍'Karl'
撇號沒有得到逃脫,即查詢的執行過程...WHERE [Name] = Karl
並失敗。
任何人有一個建議?
感謝
卡爾
做這樣 SET @query = 'SELECT * FROM表WHERE [名] = ''''卡爾 '' ''
這是不行的,除非卡爾之前,他的名字,如「卡爾」,因爲它會導致實際的查詢中後存儲在數據庫中的一個單引號:SELECT * FROM表WHERE [名] =「」卡爾' – 2009-06-30 14:42:28
thne末 不喜歡這一套@query增加一個報價=「SELECT * FROM表WHERE [名] =‘’」「卡爾」「」「」」像這樣 – KuldipMCA 2009-07-01 04:49:27
只需逃脫撇號通過使用轉義條\這樣的 'SELECT * FROM表WHERE [名] =' \ '\卡爾' ''
希望它可以幫助
不會在SQL Server的T-SQL工作 – 2009-06-30 14:37:11
這工作對我從SQL Server Management Studio中機:
@query varchar(max)
SET @query = 'SELECT * FROM Table WHERE [Name] = ''''''Karl'''''''
EXEC(@query)
有幾種方法,你可以在SQL Server轉義字符數據,甚至有人主張用的QUOTENAME()功能。
如果你真的想要對這個主題領域有深入的理解,那麼我建議你看看有經驗的SQL Server開發人員認爲什麼是必要的閱讀方法,你可以使用不同的方法將Dynamic T -SQL進入你的編碼。
嘗試:
DECLARE @query varchar(max)
SET @query = 'SELECT * FROM Table WHERE [Name] = ''Karl'''
PRINT 'when in doubt, print the query out: '+ISNULL(@query,'')
EXEC(@query)
爲了有一個單引號出現,你需要有兩個相鄰的單引號。你逃單引號用單引號,例如:
PRINT '''' --will print a one single quote
PRINT '''''' --will print two single quotes
PRINT 'can''t' --will print can't
雙單引號(「」)的報價會像一個單引號的字符串時,裏面的文字。
您是否嘗試過使用變量?
declare @karl_name varchar(10);
set @karl_name = '''Karl''';
SELECT * FROM Table WHERE [Name] = @karl_name
這工作:
create table #demo([Name] varchar(max))
insert into #demo([Name]) values('''Karl''')
insert into #demo([Name]) values('Karl')
declare @query varchar(max)
set @query = 'SELECT * FROM #demo WHERE [Name] = ''''''Karl'''''''
EXEC(@query)
輸出:
'Karl'
但如果 '卡爾' 是可變文本,強烈建議使用這樣的事情,而不是:
declare @query nvarchar(max)
declare @param varchar(max)
set @param = N'''Karl'''
set @query = N'SELECT * FROM #demo WHERE [Name] = @param'
exec sp_executesql @query, N'@param varchar(max)', @param
這是SQL Server 2008,對不對?不是MySQL或PostgreSQL或SQLite或任何其他SQL變體? – MiffTheFox 2009-06-30 06:50:56
如果您打印字符串@query,您會看到什麼? – Tetraneutron 2009-06-30 06:53:20