Kasa GİBİ bir ifade kullanmak için, SQL Server bir dize kaçış
Ne kadar güvenli LIKE
ifade kullanmak için SQL Server depolanmış yordam bir dize kurtulurum.
Öyle gibi: NVARCHAR
bir değişken var sanırım
declare @myString NVARCHAR(100);
Ve* *10 bir ifade kullanmak istiyorum:
... WHERE ... LIKE '%' @myString '%';
Nasıl escape string (daha spesifik olarak, karakterleri bu anlamlı LIKE
desen eşleştirme, örneğin %
?
) T-SQL, bu yüzden güvenli kullanmak için bu şekilde?
Örneğin, belirli:
@myString = 'aa»'
Ä°stiyorum:
WHERE ... LIKE '%' @somehowEscapedMyString '%'
'aa»'
, 'caa»c'
'aaxbb'
'caaxbb'
maç için.
CEVAP
Özel karakterler kaçmak GİBİ bir ifade içinde bir kaçış karakteri ile onları önek. Çıkış anahtar ile kullanmak için char hangi seçim için olsun. (MSDN Ref)
Örneğin bu % sembolü, kaçış char olarak kullanarak \ kaçar:
select * from table where myfield like '\% off%' ESCAPE '\'
Eğer karakter dizesi olacaktır ve joker olarak kabul etmek istemediğiniz şey bilmiyorsun bile, bir kaçış char ile tüm joker karakterler, örneğin önek:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(Escape char çok kurtulacak olanlar replace
diğer tablolardan ekledi kaçış) yok replace
iç emin olun unutmayın. O zaman bu gibi bir şey kullanabilirsiniz:
select * from table where myfield like '%' @myString '%' ESCAPE '\'
Ayrıca dize değiştirme ile daha uzun olacak gibi @hoşgeldiniz değişken için daha fazla alan ayırmak için hatırlıyorum.
Eğer bir dize geçerli bir adres olup o...
Nasıl/NVARCHAR dize eklemek bir SQL Se...
Nasıl SQL Server dizeleri bitiştirmek ...
Bir dize bir sed için kaçış desen deği...
Nasıl bir dize düzenli ifade kullanara...