LIKE ne fonctionne pas dans TSQL

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