Je suis déconcertant que je ne trouve pas les différences entre ces deux jeux de cordes, qui semblent être exactement les mêmes pour moi. J'ai vérifié l'espace blanc entre les cordes, mais pas de chance. Lors de la course sous les questions ci-dessous dans SQL Management Studio, un seul d'entre eux retourne des résultats ... S'il vous plaît aider, merci.
4 Réponses :
Cela pourrait être que votre chaîne ou la colonne a un caractère spécial CR ou CRLF, essayez de supprimer ces caractères de la comparaison:
SELECT *
FROM Vendors
WHERE replace(replace(ltrim(rtrim(VendorCode)), char(13), ''), char(10), '') = replace(replace(ltrim(rtrim('SRP 85072B')), char(13), ''), char(10), '')
Merci de votre réponse, mais désolé de dire quand je l'exécute, ça retourne zéro rangée ...
Ce code utilise un TADY pour séparer les deux chaînes, convertir chaque caractère à sa valeur ASCII et renvoyer les différences.
declare
@string1 nvarchar(200)='zdq%E^&$DGE%^#((',
@string2 nvarchar(200)='zdq%E^&$DGx%^#((';
select ascii(SUBSTRING(@string1, t.n, 1)), t.n from dbo.fnTally(1, len(@string1)) t
except
select ascii(SUBSTRING(@string2, t.n, 1)), t.n from dbo.fnTally(1, len(@string2)) t;
Une des chaînes comporte deux espaces réguliers consécutifs, l'autre a un espace non rompant (caractère 160 décimal 0xa0 hex) suivi d'un espace normal (caractère 32 décimal 0x20 hexagonal).
Vous pouvez le voir de copier et coller les chaînes d'ici comme je l'ai fait ici 0x4154542020363031393753
0x415454A020363031393753
Ils semblent similaires Si vous exécutez la requête SQL suivante si les paramètres proviennent de la même source, vous pouvez vérifier à l'aide de la requête suivante P> DECLARE @param nvarchar(max) = 'SRP 85072B'
SELECT * FROM Vendors WHERE VendorCode like '%'+ @param+'%'
Ils sont i> identiques. Ou au moins ce que vous avez affiché (espoir, collé). Prenez le temps de nous donner un exemple de reproductible minimal .
Courez-vous les deux de la même fenêtre sous la même base de données?
Option 1: Option de caractères non imprimables 2: même glyphe code différent
@ shawnt00 qui est correct, même fenêtre, même base de données
@Larny, ils semblent identiques, mais on retourne une ligne, l'autre ne fait pas
@Larnu ressemble à la rendu de Markdown rend les espaces non rompus comme des espaces réguliers. Le texte brut est différent
Copier / coller 2 requêtes dans un éditeur qui peut montrer des caractères cachés