Considérez ce TSQL :
declare @b varchar(100) set @b = 'BANK-41' IF @b LIKE 'BANK_%' BEGIN print 'Wrong Matching' END
Pourquoi le TSQL correspond-il à la string " BANK-
" et " BANK_
"?
Dans TSQL, le trait de soulignement est un caractère générique représentant un seul caractère.
Afin d'échapper à vous devez l'envelopper avec des crochets, comme ceci:
'BANQUE[_]%'
Voir cette page: http://www.dirigodev.com/blog/web-development-execution/escaping-percent-and-underscore-characters-in-t-sql-like-clause/
Un trait de soulignement dans SQL Server est réservé pour un caractère générique, je pense. Vous devez y échapper. Je pense que vous pouvez le mettre entre parenthèses:
%[_]%
Vous devez échapper au "_". C'est un caractère spécial pour l'instruction Like. Vous pouvez l'inclure dans [].
Voir LIKE (Transact-SQL) .
Essayez comme LIKE ESCAPE
:
SELECT x.Col1, CASE WHEN x.Col1 LIKE 'BANK_%' THEN 1 ELSE 0 END AS Test#1, CASE WHEN x.Col1 LIKE 'BANK\_%' ESCAPE '\' THEN 1 ELSE 0 END AS Test#2 FROM ( SELECT 'BANK-41' UNION ALL SELECT 'BANK_41' ) x(Col1);
Résultats:
Col1 Test#1 Test#2 ------- ----------- ----------- BANK-41 1 0 BANK_41 1 1