/ / sas sql: odfiltrowuje uszkodzony wiersz - sql, sas

sas sql: odfiltrować uszkodzony wiersz - sql, sas

Muszę skopiować dane z własnej tabeli do drugiejodfiltrować uszkodzone wiersze; Mam kolumnę z datami i czasami mam takie wiersze "." - losowa liczba spacji i jedna kropka. jak mogę uczynić mój sql, aby zignorować te wiersze?

próbowałem użyć

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

i wiele innych wariancji

"gdzie nie jak"

lub

"gdzie <>"

ale wszystkie dały mi błędy

"Wyrażenie używające equals (=) ma komponenty, które są różne typy danych. "

lub

BŁĄD 22-322: Błąd składniowy, oczekujący jednej z następujących czynności:

i długą listę operatorów

Odpowiedzi:

1 dla odpowiedzi № 1

Najpierw musisz sprawdzić, czy to jest postać lub numeryczne pole. . jest sposób wyświetlania SAS null (missing w języku SAS) dla liczb, więc jest całkowicie możliwe, że masz pole numeryczne.

where not missing(DatesOfRun)

lub

where DatesOfRun is not null

Każdy z nich powinien to zrobić, jeśli jest to numeryczne.

Jeśli jest to postać, to jest to dość proste.

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

trim tylko przycina puste miejsca na końcu, strip usuwa z obu stron.

Możliwe jest również, że masz niezłamujące się przestrzenie lub inne rzeczy, które mogą zepsuć te ostatnie, jeśli strip jeden działa tak jak nie powoduje błędu, ale faktycznie nie usuwa znaków, możesz chcieć użyć kroku danych i put ta zmienna do dziennika przy użyciu $HEX32. format (z odpowiednią szerokością, 2 razy większy odliczba możliwych postaci) i zobacz, co wychodzi; jeśli nie rozpoznajesz postaci lub nie wiesz, jak radzić sobie z kodami ASCII, wróć tutaj i zadaj nowe pytanie z tymi informacjami.


1 dla odpowiedzi nr 2

Aby wyjaśnić, próbujesz ignorować wynikigdzie kolumna DatesOfRun zawiera znak "."? Jeśli tak, możesz użyć operatorów wieloznacznych, jeśli "." mogą pojawiać się w losowych lokalizacjach, takich jak ".%" lub "%.%"

Sprawdź także typ danych kolumny DatesOfRun; to również może mieć wpływ na wyniki.

Dwie klauzule WHERE mogą potencjalnie rozwiązać Twój problem; spróbuj użyć tej klauzuli WHERE i zobacz, czy zgłasza błąd:

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