Alors .. Je pensais que je connaissais mssql assez bien, mais cette requête m'a demandé aujourd'hui m'a perplexe. Fondamentalement, un morceau de code quelque part utilise la clause LIKE pour déterminer comment filtrer certaines valeurs. Je dois souligner que ceci ne peut pas être changé, nous ne pouvons pas modifier la requête pour utiliser NOT LIKE. Mais que faire si c'est ce que je veux faire? Considérez cet exemple:SQL LIKE pas/^ opérateur et plusieurs caractères
select * from
(
select '1.2A' as num
union
select '1.3A' as num
union
select '1.4A' as num
union
select '1.4B' as num
union
select '1.5A' as num
) as test
where num like '1.[^4]_'
Maintenant ... comment l'emplacement peut-il être modifié pour renvoyer tout sauf 1.4A? Vous ne pouvez pas faire [^ 4A] ou même [^ 4] [^ A] pour des raisons évidentes. Est-ce quelque chose qui est simplement impossible à faire sans utiliser NOT LIKE? Ou est-ce que j'ai manqué quelque chose ici et juste vendredi pour le réaliser?
par curiosité pourquoi ne; t vous modifiez la requête ne PAS utiliser comme? – HLGEM
Parce que le code est dans un autre composant. Fondamentalement, la seule chose que je peux fournir le code est la valeur de la clause LIKE en tant que chaîne. Je pourrais être méchant et injecter du SQL supplémentaire: par ex. String likeArg = "'%' ET ColName NOT = '1.4A'" Mais je sais pertinemment que les noms de colonne sont dynamiques .. donc vissés là aussi ... – MRAH