Wie finden Sie die Länge einer numerischen Variablen mit PROC SQL
Ich habe einen Datensatz mit einer Spalte mit Telefonnummern. Ich möchte die filter dieser Datensatz mit PROC SQL WHERE
die Länge der zahlen ist mindestens 7 stellen.
In normalen SQL-ich kann nur für eine Länge-Funktion, um eine Reihe und es funktioniert, allerdings in SAS es wird nicht lassen Sie mich es gelten für eine numerische Spalte.
Mein Erster Instinkt ist, zu konvertieren die Spalte ein Zeichen und dann finden die Länge, aber ich kann nur scheinen, um eine Größe, wenn ich den put
Funktion.
Aber ich weiß nicht einmal, die größte Größe für meine zahlen, wie ich kann nicht berechnen Sie die Länge!
Wie finde ich die Länge von einem numerischen Wert in SAS mit PROC SQL?
Keine Telefonnummer (in den USA zumindest) kann mit null beginnen, es sei denn, es ist eine internationale Nummer, und enthält die
011
exit code (in dem Fall wäre es gut über 7-stellig).Ah, ok. Besser als hier in Großbritannien, wo Sie beginnen alle mit einer null (die ist, warum Sie hauptsächlich als gespeicherte Zeichen in Datenbanken). Ich dachte entlang der Linien von mit der
VVALUE
- Funktion in Verbindung mit LENGTH
Leider
vvalue
ist nicht verfügbar in der PROC SQL.InformationsquelleAutor shecode | 2015-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie keine Beiträge geschrieben haben, die Beispiel-dataset , so dass ich erstellt habe, eine für mich
Erstellen der Beispiel-dataset. Unter
phonenum
alsnumeric
gleiche wie in Ihrem Fall.Sind Sie richtig im Ansatz, wenn Sie wollen, um die Anzahl der Ziffern, es muss umgewandelt werden, um
char
zu werden, macht die folgenden Schritte:numeric
phonenum zuchar
. Obwohl es offensichtlich ist, dass die Anzahl der Ziffern, die würden nicht größer als 32 ist, noch, wenn Sie möchten, können Sie erhöhen die Anzahl.compress
Funktionstrip
aus dem leer Zeichenlength
- Funktion, um die Anzahl der Ziffernproc sql\SAS
Sie können nicht verwenden Sie die neu erstellte variable in derwhere
- Anweisung einfach so, sondernproc sql
ermöglicht es Ihnen, dies zu tun mit dercalculated
Schlüsselwort, bevor eine solche Art der Variablen.Zusätzlich, Sie könnte das gleiche zu erreichen mit datasteps(SAS), wie unten:
InformationsquelleAutor NEOmen
In SAS
length()
nimmt eine Zeichenkette als argument(nur).Müssten Sie konvertieren numerische variable Charakter:
die Funktion zu nutzen. Die
-l
Links richtet, das Ergebnis (also die zusätzlichen Leerzeichen werden ignoriert). Sie können beliebig wählen, 32 (dieser ist viel länger, als es sein sollte) oder jeden anderen Wert von mindestens 10 oder so (ermitteln Sie diese aus Ihrer wahrscheinlichen numerischen Werten kann dieses eine Land-code, etc.).Natürlich könnte man immer nur sagen, dass
denen würde das gleiche tun, Nein?
Und natürlich eine Telefon-Nummer sollte niemals gespeichert werden in einem numerischen Feld. 7-stellige Nummer dauert 7 bytes, wie Sie Zeichen -, 8 als Zahl, und während es enthält 7 Ziffern, es ist wirklich nicht ein numerisches Konzept.
Ah - it-right-richtet die Nummer, ich vergaß.
InformationsquelleAutor Joe
Ich würde vorschlagen, mit magic:
InformationsquelleAutor uzbad