Un bloque SQL puede contener varias cláusulas separadas por punto y coma.
Los bloques individuales se pueden utilizar para realizar las siguientes tareas con las siguientes palabras clave:
Con la excepción de los tres primeros:
Ahora vamos a proporcionar más información sobre las palabras clave:
Para borrar la selección, utilice la cláusula
CLEAR SELECTION
Para establecer una variable escalar, por ejemplo
LET <variablename> = <value>
Para establecer una variable de lista, como
LIST <variablename> = <value>, <value>, <value>, <value>
Para seleccionar objetos, utilice la palabra clave SELECT, por ejemplo
SELECT
SELECT ALL
SELECT SELECTED
SELECT FROM conduit
SELECT ALL FROM conduit
SELECT SELECTED FROM conduit
SELECT WHERE x > 0
SELECT ALL WHERE x > 0
SELECT SELECTED WHERE x > 0
SELECT FROM conduit WHERE conduit_width > 250
SELECT ALL FROM conduit WHERE conduit_width > 250
SELECT SELECTED FROM conduit WHERE conduit_width > 250
Si va a realizar la selección en la tabla activa con el modo de selección activa, la palabra clave SELECT se puede omitir, por ejemplo.
x>0
Para anular la selección de objetos, utilice la palabra clave DESELECT
DESELECT
DESELECT ALL
DESELECT SELECTED
DESELECT FROM conduit
DESELECT ALL FROM conduit
DESELECT SELECTED FROM conduit
DESELECT WHERE x > 0
DESELECT ALL WHERE x > 0
DESELECT SELECTED WHERE x > 0
DESELECT FROM conduit WHERE conduit_width > 250
DESELECT ALL FROM conduit WHERE conduit_width > 250
DESELECT SELECTED FROM conduit WHERE conduit_width > 250
Para suprimir objetos, utilice la palabra clave DELETE
DELETE
DELETE ALL
DELETE SELECTED
DELETE FROM conduit
DELETE ALL FROM conduit
DELETE SELECTED FROM conduit
DELETE WHERE x > 0
DELETE ALL WHERE x > 0
DELETE SELECTED WHERE x > 0
DELETE FROM conduit WHERE conduit_width > 250
DELETE ALL FROM conduit WHERE conduit_width > 250
DELETE SELECTED FROM conduit WHERE conduit_width > 250
Para cambiar el valor de los campos o variables, utilice la palabra clave SET. Es posible establecer más de un valor a la vez separando las asignaciones con comas.
SET x = x – 100, y = y – 100
SET x = x – 100, y = y – 100 WHERE ground_level > 20
Para modificar la tabla activa y el modo de selección activo, se debe utilizar la palabra clave UPDATE
UPDATE ALL SET x = x – 100, y = y - 100
UPDATE SELECTED SET x = x – 100, y = y - 100
UPDATE node SET x = x – 100, y = y - 100
UPDATE ALL node SET x = x – 100, y = y - 100
UPDATE SELECTED node SET x = x – 100, y = y – 100
UPDATE ALL SET x = x – 100, y = y – 100 WHERE ground_level > 20
UPDATE SELECTED SET x = x – 100, y = y – 100 100 WHERE ground_level > 20
UPDATE node SET x = x – 100, y = y - 100100 WHERE ground_level > 20
UPDATE ALL node SET x = x – 100, y = y – 100 100 WHERE ground_level > 20
UPDATE SELECTED node SET x = x – 100, y = y – 100 100 WHERE ground_level > 20
Para seleccionar un número de valores, utilice la palabra clave SELECT y, a continuación, sígalo con los valores que desea que se muestren separados por comas.
SELECT node_id ,MAX(us_links.conduit_width), MIN(us_links.conduit_width)
Es posible modificar el título dado a la columna en la tabla o en el archivo CSV utilizando la palabra clave AS, por ejemplo
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as mymin
El título puede estar sin comillas, en cuyo caso no puede haber espacios ni caracteres no alfanuméricos, ni comillas, por ejemplo
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as '£% my min'
Es posible modificar la tabla
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as mymin FROM node
Los resultados se mostrarán en una tabla a menos que se especifique un archivo mediante la palabra clave INTO
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as mymin FROM node INTO FILE 'c:\temp\mynodes.csv'
Es posible filtrar los objetos sobre los que se informará mediante la palabra clave WHERE
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as mymin FROM node WHERE MAX(us_links.conduit_width) > 450
Es posible calcular resultados agregados sobre grupos de objetos
SELECT MAX(MAX(us_links.conduit_width)) GROUP BY system_type
Es posible limitar los resultados de los agregados notificados mediante la palabra clave HAVING
SELECT MAX(MAX(us_links.conduit_width)) GROUP BY system_type HAVING MAX(MAX(us_links.conduit_width))<1000
En la tabla siguiente se muestra la sintaxis SQL admitida en este producto de Autodesk. A continuación, se pueden encontrar notas adicionales.
Consulte el documento técnico SQL en InfoWorks WS Pro para obtener información completa sobre el uso de SQL y todas las funciones admitidas.
El texto del comentario se omite cuando se ejecuta la consulta.
/* | Inicio del texto del comentario |
*/ | Final del texto del comentario |
INT(number) |
Parte entera de un número. |
FLOOR(number) |
Entero más cercano menor o igual que el parámetro. |
CEIL(number) |
Entero más cercano mayor o igual que su parámetro. |
FIXED(number to convert,number of decimal places) | Dado un número y un número de decimales entre 0 y 8, convierta el número en una cadena con ese número de decimales, redondeando hacia arriba o hacia abajo según corresponda. Si el número de decimales es 0, la cadena no tendrá ningún separador decimal. |
abs(x) |
Toma el valor absoluto de x. La función devuelve x si x >= 0, -x en caso contrario |
left(s,n) |
Devuelve los primeros n caracteres de la cadena s o toda la cadena si n es mayor que la longitud de la cadena |
right(s,n) |
Devuelve los últimos n caracteres de la cadena s, o toda la cadena si n es mayor que la longitud de la cadena). |
mid(s,n,m) |
Devuelve la subcadena de la cadena s que contiene caracteres m que comienzan en la posición n, contando desde 1 como posición inicial |
len(s) |
Devuelve la longitud de la cadena s |
iif(x,y,z) |
Si la expresión x es verdadera, devuelve y de lo contrario devuelve z |
nvl(x,y) | Si x es nulo, devuelve y de lo contrario devuelve x |
subst(s1,s2,s3) |
Reemplaza la primera instancia de la cadena s2 en la cadena s1 por la cadena s3 Por ejemplo: subst(node_id,'01','ND') se aplica al ID de nodo "01880132" y devuelve "ND880132" |
gsubst(s1,s2,s3) |
Reemplaza todas las instancias de la cadena s2 en la cadena s1 por la cadena s3 Por ejemplo: gsubst(node_id,'01','ND') se aplica al ID de nodo "01880132" y devuelve "ND88ND32" |
gensubst(s,regexp,format) |
Reemplaza la cadena s por el formato definido si la expresión regular regxp coincide con la cadena s; de lo contrario, devuelve la cadena s sin cambios. Por ejemplo: gensubst(node_id,'(01)(..)(..)(.*)','ND\2\4a\1') se aplica al nodo "01880132", devuelve "ND8832a01"
|
nl() |
Devuelve un carácter de nueva línea Por ejemplo, para configurar un campo de nota de tres líneas: SET notes = 'Set'+NL()+'new'+NL()+'line' |
yearpart(s) |
YEARPART se aplica a/devuelve el año de una fecha. Si la fecha es 24/09/2007, YEARPART es 2007. Nota: las funciones YEARPART, MONTHPART y DAYPART funcionan en campos de fecha y campos de cadena con formato de fecha. Se devuelve un cero si la cadena a la que se aplican no es una fecha.
|
monthpart(s) |
MONTHPART se aplica a/devuelve el mes de una fecha. MONTHPART es 09 si tomamos el ejemplo anterior. Nota: las funciones YEARPART, MONTHPART y DAYPART funcionan en campos de fecha y campos de cadena con formato de fecha. Se devuelve un cero si la cadena a la que se aplican no es una fecha.
|
daypart(s) |
DAYPART se aplica a/devuelve el día de una fecha. En el ejemplo anterior, DAYPART es 24. Nota: las funciones YEARPART, MONTHPART y DAYPART funcionan en campos de fecha y campos de cadena con formato de fecha. Se devuelve un cero si la cadena a la que se aplican no es una fecha.
|
NOW() |
Función sin ningún parámetro que defina el presente. Esta función examina la fecha y la hora del equipo, de modo que las consultas SQL con NOW no se deben volver a escribir cada vez antes de ejecutarlas para que sean actuales. |
DATEPART(date) |
DATEPART devuelve la parte de fecha como una fecha (por ejemplo, elimina los minutos de las fechas). |
TIMEPART(date) |
TIMEPART devuelve la parte de hora de una fecha como un número de minutos después de medianoche. |
YEARSDIFF(from,to) |
YEARSDIFF devuelve el número de años completos entre dos fechas. Nota: Las funciones YEARSDIFF, MONTHSDIFF y DAYSDIFF ignoran cualquier parte de los minutos de las fechas en cuestión.
|
MONTHSDIFF(from,to) |
MONTHSDIFF devuelve el número de meses completos entre dos fechas. Nota: Las funciones YEARSDIFF, MONTHSDIFF y DAYSDIFF ignoran cualquier parte de los minutos de las fechas en cuestión.
|
DAYSDIFF(from,to) |
DAYSDIFF devuelve el número de días completos entre dos fechas. Nota: Las funciones YEARSDIFF, MONTHSDIFF y DAYSDIFF ignoran cualquier parte de los minutos de las fechas en cuestión.
|
INYEAR(date,number) |
INYEAR devuelve verdadero si la fecha es el año dado como un número. Nota: Si alguno de los parámetros de las funciones INYEAR, INMONTH, INYEARS e INMONTHS no son números, la función devolverá false. Si el número no es un entero, se redondea al entero más cercano.
|
INMONTH(date,month,year) |
INMONTH devuelve verdadero si la fecha está en el mes y año dados como números. Nota: Si alguno de los parámetros de las funciones INYEAR, INMONTH, INYEARS e INMONTHS no son números, la función devolverá false. Si el número no es un entero, se redondea al entero más cercano.
|
INYEARS(date,startyear,endyear) |
INYEARS devuelve verdadero si la fecha se encuentra en un año entre los años inicial y final inclusive. Nota: Si alguno de los parámetros de las funciones INYEAR, INMONTH, INYEARS e INMONTHS no son números, la función devolverá false. Si el número no es un entero, se redondea al entero más cercano.
|
INMONTHS(date,startmonth,startyear,endmonth,endyear) |
INMONTHS devuelve verdadero si la fecha se encuentra entre el mes inicial del año inicial y el mes final del año final inclusive. Nota: Si alguno de los parámetros de las funciones INYEAR, INMONTH, INYEARS e INMONTHS no son números, la función devolverá false. Si el número no es un entero, se redondea al entero más cercano.
|
ISDATE(putative_date) |
Si el campo es una fecha porque proviene de la base de datos, devuelve true, si es una cadena, devuelve true si se puede convertir en una fecha, de lo contrario, devuelve false. |
MONTHYEARPART(date) |
MONTHYEARPART devuelve la cadena "<month>/<year>". |
YEARMONTHPART(date) |
YEARMONTHPART devuelve la cadena "<mes>/<año>". |
MONTHNAME(date) |
MONTHNAME devuelve el nombre del mes (en la configuración regional activa). |
SHORTMONTHAME(date) |
SHORTMONTHNAME devuelve el nombre abreviado del mes (según lo determine la configuración regional y cómo lo abrevia Windows). |
DAYNAME(date) |
DAYNAME devuelve el nombre del día (en la configuración regional activa).. |
SHORTDAYNAME(date) |
SHORTDAYNAME devuelve el nombre abreviado del día (según lo determine la configuración regional y cómo lo abrevia Windows). |
NUMTOMONTHNAME(n) | Devuelve el nombre de mes dado un entero entre 1 y 12. |
NUMTOSHORTMONTHNAME(n) | Devuelve la versión corta de un nombre de mes (p. ej., ENE) dado un entero entre 1 y 12. |
TODATE(year,month,day) | Devuelve la fecha especificada como enteros para el año, el mes y el día. |
TODATETIME(year,month,day,hours,minutes) | Devuelve la fecha especificada como enteros para el año, el mes y el día. |
El propósito de estas funciones es dividir valores en rangos, valores de puntuación, asignar valores en listas, etc.
AREF(n,list) |
Si se proporciona una lista de variables de lista y un número entre 1 y la longitud de la lista, AREF devuelve el elemento enésimo de la lista. |
LEN(list variable) |
LEN devuelve el número de elementos de una variable de lista. |
RINDEX(expression, list variable) |
RINDEX es una función que solo se puede utilizar si la lista está ordenada. El propósito de la función RINDEX es, esencialmente, dividir los valores en "contenedores". |
LOOKUP(expression, list variable) |
Si no hay elementos en la lista y el valor de la expresión está entre 1 y n, LOOKUP devolverá el elemento adecuado de la lista. |
MEMBER(expression, list variable) |
MEMBER devuelve verdadero si el valor de la expresión es uno de los valores de la lista; en caso contrario, devuelve falso. |
INDEX(expression, list variable) |
Si el resultado de la expresión es el primer valor de la lista, INDEX devolverá 1, si es el valor del segundo, devolverá 2, si el resultado de la expresión no es la lista, devolverá 1. |
TITLE(n,list) |
TITLE proporciona títulos para los "contenedores" cuando RINDEX se utiliza para dividir valores en varios rangos. |
LOG(x) |
Calcula el registro (base 10) de x. |
LOGE(x) |
Calcula el registro (base e) de x. |
EXP(x) |
Calcula e^x. |
SIN(x) |
Calcula el signo de x. |
COS(x) |
Calcula el coseno de x. |
TAN(x) |
Calcula la tangente de x. |
ASIN(x) |
Calcula el signo inverso de x. |
ACOS(x) |
Calcula el coseno inverso de x. |
ATAN(x) |
Calcula la tangente inversa de x. |
ATAN2(x,y) |
Calcula la tangente inversa de x/y utilizando los signos de x e y para determinar el cuadrante. |
GAMMALN(x) |
Devuelve el LOG (base e) de la función gamma de x. |
Las funciones de agregado se utilizan para permitir el cálculo de valores basados en:
ANY |
ANY devuelve verdadero si la expresión es verdadera para cualquier fila del campo de matriz, por ejemplo ANY(details.code=’JDS’) devolverá verdadero si alguna de las filas del campo de matriz de detalles tiene el código JDS; en caso contrario, devuelve falso. La expresión entre paréntesis puede contener más de un campo de matriz, otros campos del objeto, constantes y funciones no agregadas, y todas ellas se pueden combinar con operadores aritméticos, de comparación y lógicos. |
TODOS |
ALL devuelve verdadero si la expresión es verdadera para todas las filas, los objetos o pasos temporales relacionados |
COUNT |
COUNT cuenta el número de filas, objetos relacionados o pasos temporales para los que la expresión es verdadera. |
MAX |
MAX devuelve el valor máximo (número, fecha o cadena) de todas las filas, objetos relacionados o pasos temporales. |
MIN |
MIN devuelve el valor mínimo (número, fecha o cadena) de todas las filas, objetos relacionados o pasos temporales. MAX y MIN funcionan en campos numéricos, de fecha y de cadena. En el caso de los campos de cadena, la comparación entre cadenas se realiza en función del idioma en el que se haya configurado la instalación de Windows. |
AVG |
AVG devuelve la media de todos los valores no nulos de la expresión (solo numéricos) para todas las filas/objetos relacionados/pasos temporales. |
FIRST |
FIRST devuelve el valor de la expresión para la primera fila, objeto relacionado o paso temporal. |
LAST |
LAST devuelve el valor de la expresión para la primera fila, objeto relacionado o paso temporal. Por tanto, al calcular el valor, se tiene en cuenta uno de los registros del campo de matriz. |
+-*/><=>=<=<> |
Todos estos operadores hacen lo que se espera de los números. <> significa "no igual a". Además, + se puede utilizar para concatenar cadenas. + es el único operador aritmético que tiene un significado especial para cadenas. |
^ |
El operador ^ significa "elevar a la potencia". Por ejemplo, x^2 significa x al cuadrado. |
% |
a % b da el resto de a/b, por ejemplo, el año % 10 da el último dígito del año. |
ANDORNOT |
Intuitivo. |
IS NULL |
Se evalúa como verdadero si un campo es NULL |
IS NOT NULL |
Se evalúa como verdadero si un campo no es NULL |
LIKE |
Los dos caracteres especiales que se pueden utilizar con LIKE son:
Solo uno de cada dos caracteres de una cadena coincide con sí mismo. La coincidencia es como en DOS, es decir:
Al igual que con DOS, una vez que se pulsa un *, todo coincide. Por lo tanto, no puede hacer cosas como "*AB" para encontrar cosas con AB al final, o LIKE "*AB*" para encontrar algo con AB en algún lugar de la cadena. Tenga en cuenta que este comportamiento de LIKE es diferente del comportamiento de Microsoft Access. |
MATCHES |
MATCHES permite realizar búsquedas más complejas que el operador LIKE mediante expresiones regulares. Los elementos de sintaxis importantes son:
La correspondencia funciona como se indica a continuación:
Las expresiones regulares son potentes y se puede hacer mucho más con ellas que con los ejemplos básicos que se muestran arriba. Para obtener más información sobre las expresiones regulares y su sintaxis, consulte este artículo en Wikipedia. |
True False NULL |
Intuitivo. |
Es posible utilizar las funciones añadidas en todos los resultados de la simulación en lugar de solo una instantánea mediante tsr en lugar de sim.
DURATION |
DURATION: tiempo (en minutos) durante el que la expresión es verdadera (solo resultados) |
INTEGRAL |
integral: Devuelve la suma del valor de la expresión en cada paso temporal multiplicada por la longitud del paso temporal en minutos. |
WHENEARLIEST |
WHENEARLIEST: la hora más temprana en la que la expresión es verdadera (solo resultados) |
WHENLATEST |
WHENLATEST: la última hora en la que la expresión es verdadera (solo resultados) |
EARLIEST |
EARLIEST: el primer valor no nulo de la expresión (solo resultados) |
LATEST |
LATEST: el último valor no nulo de la expresión (solo resultados) |
WHENMAX |
WHENMAX: el tiempo en que la expresión alcanza su máximo (solo resultados) |
WHENMIN |
WHENMIN: el tiempo a que la expresión se encuentra en su mínimo (solo resultados) |
El motor SQL trata la igualdad de forma algo diferente. x = NULL y x <> NULL hacen lo mismo que X IS NULL y X IS NOT NULL.