2012-01-24 36 views
7

tôi cần phải thoát khỏi [trong một truy vấn sql cho SQL Servermáy chủ sql: cần phải thoát [?

select * from sometable where name like '[something]'; 

Tôi thực sự đang tìm kiếm một [trước khi một cái gì đó và tôi không muốn nó hoạt động giống như một ký tự đại diện. Tôi cố gắng:

select * from sometable where name like ''[something]'; 

Nhưng nhận được thông báo lỗi từ này:

Msg 102, Level 15, State 1, Line 1 cú pháp sai gần 'cái gì'. Msg 105, Cấp 15, Tiểu bang 1, Dòng 1 Dấu ngoặc kép chưa được khai báo sau chuỗi ký tự ';

+2

có thể trùng lặp của [Làm cách nào để thoát khỏi dấu ngoặc vuông trong mệnh đề LIKE?] (Http://stackoverflow.com/questions/439495/how-can-i-escape-square-brackets-in-a-like -clause) – onedaywhen

Trả lời

6

Sử dụng:

select * from sometable where name like '[[]something[]]'; 

bạn có thể sử dụng cũng như:

select * from sometable where name like '\[something\]' escape '\'; 

mô tả trong LIKE (Transact-SQL) on MSDN.

+0

Có !! Điều đó đã làm việc !! Cảm ơn bạn rất nhiều vì tất cả các ý kiến ​​!! – user840930

0

Dưới đây là một mã mẫu nhỏ. Bạn cần phải nhúng các [ trong []:

SELECT FirstName 
    FROM (SELECT '[Test]' AS FirstName) as t 
WHERE FirstName LIKE '[[]%' 
4

Nhúng các [ trong []

declare @T table 
(
    name varchar(20) 
) 

insert into @T values 
('abc'), 
('[abc') 

select * 
from @T 
where name like '[[]a%' 

Kết quả:

name 
-------------------- 
[abc 

Có một cái nhìn ở đây vào những gì bạn có thể làm trong biểu thức like. LIKE (Transact-SQL)

+1

Nó có thể giúp chỉ ra rằng nó sử dụng các biểu thức chính quy, do đó, [...] biểu thị một bộ ký tự được chấp nhận. Và đó là cách thức/tại sao giải pháp này hoạt động. – weston

+1

@weston - Cập nhật câu trả lời bằng liên kết đến nơi bạn có thể đọc tất cả về nó. –

Các vấn đề liên quan