/ / sas sql: filtrer les lignes corrompues - sql, sas

sas sql: filtrer la ligne corrompue - sql, sas

J'ai besoin de copier des données de ma propre table vers une autre etfiltrer les lignes corrompues; J'ai une colonne avec des dates et parfois j'ai des lignes comme ça "." - nombre aléatoire d'espaces et un point. Comment puis-je faire mon sql pour ignorer ces lignes?

j'ai essayé de faire en utilisant

where (trim(put(DatesOfRun) not like "."

et multiple autre variance de

"où pas comme"

ou

"où <>"

mais tous m'ont donné une erreur comme

"L’expression utilisant des équations (=) a des composantes différentes Types de données."

ou

ERREUR 22-322: erreur de syntaxe, attend l'un des suivants:

et une longue liste d'opérateurs

Réponses:

1 pour la réponse № 1

Tout d'abord, vous devez confirmer s'il s'agit d'un personnage ou un numérique champ. . est comment SAS affiche null (missing en SAS parler) pour les chiffres, il est donc tout à fait possible que vous ayez un champ numérique.

where not missing(DatesOfRun)

ou

where DatesOfRun is not null

L'un ou l'autre devrait le faire, si c'est numérique.

Si c'est du caractère, alors c'est assez simple.

where not (strip(DatesOfRun) = ".")

trim ne taille que les blancs à la fin, strip enlève des deux côtés.

Il est également possible que vous ayez des espaces ininterrompus ou d'autres choses qui risquent de gâcher ce dernier, si le strip on fonctionne comme dans doesn "t erreur, mais ne supprime pas réellement les caractères, vous pouvez vouloir utiliser une étape de données et put cette variable dans le journal en utilisant $HEX32. format (avec la largeur appropriée, 2 fois lenombre de caractères possibles), et voir ce qui sort; Si vous ne reconnaissez pas les caractères ou ne savez pas comment gérer les codes ASCII, revenez ici et posez une nouvelle question avec ces informations.


1 pour la réponse № 2

Juste pour clarifier, vous essayez d'ignorer les résultatsoù la colonne DatesOfRun contient le caractère "." Si oui, vous pouvez utiliser des opérateurs génériques si le "." peut apparaître dans des emplacements aléatoires, tels que ".%" ou "%.%"

Vérifiez également le type de données de la colonne DatesOfRun. cela pourrait également influencer les résultats.

Deux clauses WHERE pourraient potentiellement résoudre votre problème. essayez d'utiliser cette clause WHERE et voyez si elle génère une erreur:

    WHERE DatesOfRun is not null
AND DatesOfRun not like "%.%"