QuoteName没有给出结果

时间:2012-05-22 15:28:09

标签: sql-server sql-server-2008 sql-server-2005

我正在尝试此代码

CREATE TABLE #t 
( 
   nam Varchar(100) 
) 
INSERT INTO #t(nam)VALUES('abc[]def') 
SELECT * FROM #t Where Quotename(nam) like Quotename('abc[]def') 
drop table #t 

并没有给我任何结果......我错过了什么?

2 个答案:

答案 0 :(得分:1)

您不需要需要引号的escape

CREATE TABLE #t 
( 
   nam VARCHAR(100) 
) 
INSERT INTO #t(nam) VALUES('abc[]def') 

SELECT * 
FROM #t 
WHERE nam LIKE 'abc\[]def' ESCAPE '\' 

DROP TABLE #t

答案 1 :(得分:1)

CREATE TABLE #t 
( 
   nam Varchar(100) 
); 
INSERT INTO #t(nam)VALUES('abc[]def'); 
SELECT * FROM #t Where Quotename(nam) = Quotename('abc[]def');
drop table #t;

它没有返回任何内容,因为Brackets [ ]被称为带有LIKE的通配符字母。 括号通配符之间指定的字符集,它将匹配指定位置中的任何一个字符(通配符的位置)。

http://msdn.microsoft.com/en-us/library/ms179859.aspx

请打开链接并搜索以下文字。

使用[]通配符