sas proc-sql

Extrae la parte izquierda de la cadena en SAS?



proc-sql (4)

¿Hay una función SAS proc SQL que puedo usar para extraer la parte izquierda de la cadena? Es algo similar a la función IZQUIERDA del servidor sql. en SQL me left(11111111, 4) * 9 = 9999 , me gustaría algo similar en SAS proc SQL. Cualquier ayuda será apreciada.


Como otros han señalado, substr() es la función que está buscando, aunque creo que una respuesta más útil también "le enseñará a pescar".

Una excelente forma de averiguar acerca de las funciones de SAS es buscar las funciones de google sas functions by category que en el momento de escribir esta publicación lo dirigirá aquí:

Funciones SAS y RUTAS DE LLAMADA por categoría

Vale la pena escanear esta lista al menos una vez para tener una idea de todas las funciones disponibles.

Si busca una versión específica, puede incluir el número de versión de SAS en su búsqueda. Tenga en cuenta que el enlace de arriba es para 9.2.

Si ha escaneado todas las funciones y todavía no puede encontrar lo que está buscando, entonces su siguiente opción puede ser escribir su propia función SAS utilizando proc fcmp . Si alguna vez necesitas ayuda para hacer esto, sugiero que publiques una nueva pregunta.


Es posible que esté buscando la función SUBSTRN ...

SUBSTRN(string, position <, length>)

Argumentos

string especifica un carácter o una constante numérica, variable o expresión.

Si la cadena es numérica, se convierte en un valor de carácter que usa BEST32. formato. Los espacios en blanco iniciales y finales se eliminan y no se envía ningún mensaje al registro SAS.

posición es un número entero que especifica la posición del primer carácter en la subcadena.

longitud es un número entero que especifica la longitud de la subcadena. Si no especifica la longitud, la función SUBSTRN devuelve la subcadena que se extiende desde la posición que especifica hasta el final de la cadena.


Tuve la impresión de que desea repetir la subcadena en lugar de multiplicar, así que estoy agregando la función REPEAT solo por curiosidad.

proc sql; select INPUT(SUBSTR(''11111111'', 1, 4), 4.) * 9 /* if source is char */ , INPUT(SUBSTR(PUT(11111111, 16. -L), 1, 4), 4.) * 9 /* if source is number */ , REPEAT(SUBSTR(PUT(11111111, 16. -L), 1, 4), 9) /* repeat instead of multiply */ FROM SASHELP.CLASS (obs=1) ; quit;


substr("some text",1,4) le dará "some". Esta función funciona de la misma manera en muchas implementaciones de SQL.

Además, tenga en cuenta que esta es una función de cadena, pero en su ejemplo la aplica a un número. SAS le permitirá hacerlo, pero en general es conveniente controlar su conversión entre cadenas y números con las funciones put() e input() para mantener su registro limpio y asegurarse de que solo está convirtiendo donde realmente lo desea.