Argumentos de valor de patrón

Algunos argumentos de las funciones de catálogo, como el argumento TableName en SQLTables, aceptan patrones de búsqueda. Estos argumentos aceptan patrones de búsqueda si el atributo de instrucción SQL_ATTR_METADATA_ID está establecido en SQL_FALSE; son argumentos de identificador que no aceptan ningún patrón de búsqueda si este atributo está establecido en SQL_TRUE.

Los caracteres de los patrones de búsqueda son los siguientes:

  • Guion bajo (_), que representa cualquier carácter único.

  • Signo de porcentaje (%), que representa cualquier secuencia de cero o más caracteres.

  • Carácter de escape, que es específico del controlador y se usa para incluir guiones bajos, signos de porcentaje y el carácter de escape como literales. Si el carácter de escape precede a un carácter que no es especial, el carácter de escape no tiene ningún significado especial. Si el carácter de escape precede a un carácter especial, aplica el escape al carácter especial. Por ejemplo, "\a" se trataría como dos caracteres ("\" y "a"), pero "\%" se trataría como el carácter único no especial "%".

El carácter de escape se recupera con la opción SQL_SEARCH_PATTERN_ESCAPE en SQLGetInfo. Debe preceder a cualquier guion bajo, signo de porcentaje o carácter de escape en un argumento que acepte patrones de búsqueda para incluir ese carácter como literal. En la tabla siguiente se muestran varios ejemplos.

Patrón de búsqueda Descripción
%A% Todos los identificadores que contienen la letra A
ABC_ Todos los identificadores de cuatro caracteres que empiezan por ABC
ABC\_ El identificador ABC_, suponiendo que el carácter de escape es una barra diagonal inversa (\)
\\% Todos los identificadores que empiezan por una barra diagonal inversa (\), suponiendo que el carácter de escape sea una barra diagonal inversa

Se debe tener especial cuidado para aplicar el escape a los caracteres de patrones de búsqueda en argumentos que aceptan patrones de búsqueda. Esto es especialmente cierto en el caso del carácter de guion bajo, que se usa normalmente en los identificadores. Un error común en las aplicaciones es recuperar un valor de una función de catálogo y pasar ese valor a un argumento de patrón de búsqueda en otra función de catálogo. Por ejemplo, supongamos que una aplicación recupera el nombre de tabla MY_TABLE del conjunto de resultados para SQLTables y lo pasa a SQLColumns para recuperar una lista de las columnas de MY_TABLE. En lugar de obtener las columnas de MY_TABLE, la aplicación obtendrá las columnas de todas las tablas que coincidan con el patrón de búsqueda MY_TABLE, como MY_TABLE, MY1TABLE, MY2TABLE, etc.

Nota:

Los controladores ODBC 2.x no admiten patrones de búsqueda en el argumento CatalogName en SQLTables. Los controladores ODBC 3*.x* aceptan patrones de búsqueda en este argumento si el atributo de entorno SQL_ATTR_ ODBC_VERSION está establecido en SQL_OV_ODBC3; en cambio, no aceptan patrones de búsqueda en este argumento si está establecido en SQL_OV_ODBC2.

Pasar un puntero nulo a un argumento de patrón de búsqueda no restringe la búsqueda de ese argumento; es decir, un puntero nulo y el patrón de búsqueda % (cualquier carácter) son equivalentes. Sin embargo, un patrón de búsqueda de longitud cero, es decir, un puntero válido a una cadena de longitud cero, coincide solo con la cadena vacía ("").