我想使用帶有轉義字符的引號。我能怎麼做?SQL Server中的轉義字符
我已經在SQL Server接收到的錯誤
Unclosed quotation mark after the character string.
我寫的SQL查詢在一個varchar變量,但我收到的錯誤:
Unclosed quotation mark after the character string.
我想用引號作爲轉義字符。
在此先感謝
我想使用帶有轉義字符的引號。我能怎麼做?SQL Server中的轉義字符
我已經在SQL Server接收到的錯誤
Unclosed quotation mark after the character string.
我寫的SQL查詢在一個varchar變量,但我收到的錯誤:
Unclosed quotation mark after the character string.
我想用引號作爲轉義字符。
在此先感謝
如果您將SQL連接到要執行的VARCHAR(即動態SQL),那麼我建議參數化SQL。這有助於防止SQL注入,這意味着您不必擔心像這樣(這是通過加倍引號來實現的)引號轉義。
例如而不是做
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA'''
EXECUTE(@SQL)
試試這個:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1'
EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'
爲什麼這是公認的答案?它不回答這個問題。 – 2018-02-05 13:11:18
@PeterMoore任何一個OP都會使用我的答案的第一部分(按照下面的其他答案加倍引號),或者會使用我推薦的用於在字符串變量中構建SQL查詢的首選方法 - 以便使用參數化的SQL。無論哪種方式,這兩個都是問題的答案 – AdaTheDev 2018-02-05 14:48:47
逸出MSSQL報價由雙引號做,所以''
或""
會產生一個逃脫分別與'
"
。
您可以逃脫的報價是這樣的:
select 'it''s escaped'
結果將是
it's escaped
簡單,甜美和更乾淨的+1,謝謝:) – 2016-05-13 12:15:32
你只是需要更換'
與''
您的字符串內
SELECT colA, colB, colC
FROM tableD
WHERE colA = 'John''s Mobile'
您還可以使用REPLACE(@name, '''', '''''')
如果生成SQL動態
如果你想有一個像聲明中逃脫,那麼你需要使用轉義語法
另外值得一提的如果你不考慮這個問題,你會打開SQL注入攻擊。更多信息在谷歌或:http://it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F
您可以定義您的轉義字符,但只能與LIKE
子句一起使用。
實施例:
SELECT columns FROM table
WHERE column LIKE '%\%%' ESCAPE '\'
這將在整個字符串搜索%
,這是一個如何可以使用SQL Server
ESCAPE
標識符。
你可以請**顯示**我們的查詢?? – 2011-02-28 08:48:18
可能的重複[如何在SQL Server中單引號轉義?](https://stackoverflow.com/questions/1586560/how-do-i-escape-a-single-quote-in-sql-server) – 2018-01-22 16:34:48