English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un operador es una palabra reservada o carácter,主要用于 SQLite WHERE子句中执行操作,如比较和算术运算。
Los operadores se utilizan para especificar condiciones en las sentencias SQLite y conectar múltiples condiciones en la sentencia.
Operadores aritméticos
Operadores de comparación
Operadores lógicos
Operadores de bits
Supongamos que la variable a =10, la variable b =20, entonces:
运算符 | 描述 | 示例 |
---|---|---|
+ | Adición - Sumar los valores a ambos lados del operador | a + b obtendrá 30 |
- | Resta - Restar los valores a ambos lados del operador | a - b obtendrá -10 |
* | Multiplicación - Multiplicar los valores a ambos lados del operador | a * b obtendrá 200 |
/ | División - Dividir el operando izquierdo por el operando derecho | b / a obtendrá 2 |
% | Módulo - El resto obtenido al dividir el operando izquierdo por el operando derecho | b % a dará 0 |
A continuación, se muestra un ejemplo simple de operadores aritméticos de SQLite:
sqlite> .mode line sqlite> select 10 + 20; 10 + 20 = 30 sqlite> select 10 - 20; 10 - 20 = -10 sqlite> select 10 * 20; 10 * 20 = 200 sqlite> select 10 / 5; 10 / 5 = 2 sqlite> select 12 % 5; 12 % 5 = 2
Supongamos que la variable a =10, la variable b =20, entonces:
运算符 | 描述 | 示例 |
---|---|---|
== | Verifique si los valores de los dos operandos son iguales, si lo son, la condición es verdadera. | (a == b) no es verdadero. |
= | Verifique si los valores de los dos operandos son iguales, si lo son, la condición es verdadera. | (a = b) no es verdadero. |
!= | Verifique si los valores de los dos operandos son iguales, si no lo son, la condición es verdadera. | (a != b) es verdadero. |
<> | Verifique si los valores de los dos operandos son iguales, si no lo son, la condición es verdadera. | (a <> b) es verdadero. |
> | Verifica si el valor del operando izquierdo es mayor que el valor del operando derecho, y si es así, la condición es verdadera. | (a > b) no es verdadero. |
< | Verifica si el valor del operando izquierdo es menor que el valor del operando derecho, y si es así, la condición es verdadera. | (a < b) es verdadero. |
>= | Verifica si el valor del operando izquierdo es mayor o igual que el valor del operando derecho, y si es así, la condición es verdadera. | (a >= b) no es verdadero. |
<= | Verifica si el valor del operando izquierdo es menor o igual que el valor del operando derecho, y si es así, la condición es verdadera. | (a <= b) es verdadero. |
!< | Verifica si el valor del operando izquierdo no es menor o igual que el valor del operando derecho, y si es así, la condición es verdadera. | (a !< b) es falso. |
!> | Verifica si el valor del operando izquierdo no es mayor o igual que el valor del operando derecho, y si es así, la condición es verdadera. | (a !> b) es verdadero. |
假设 COMPANY 表有以下记录:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
El siguiente ejemplo muestra el uso de varios operadores de comparación en SQLite.
Aquí, utilizamos WHERE La cláusula WHERE, que se explicará en un capítulo aparte, se utiliza para establecer condiciones en una declaración SELECT. Ahora debe entender que la cláusula WHERE se utiliza para establecer condiciones en una declaración SELECT.
La siguiente declaración SELECT enumera SALARY que es mayor que 5Las grabaciones de 0,000.00:
sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
La siguiente declaración SELECT enumera SALARY que es igual a 2Las grabaciones de 0,000.00:
sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0
La siguiente declaración SELECT enumera SALARY que no es igual a 2Las grabaciones de 0,000.00:
sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
La siguiente declaración SELECT enumera SALARY que no es igual a 2Las grabaciones de 0,000.00:
sqlite> SELECT * FROM COMPANY WHERE SALARY <> 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
La siguiente declaración SELECT enumera SALARY que es mayor o igual que 65Las grabaciones de ,000.00:
sqlite> SELECT * FROM COMPANY WHERE SALARY >= 65000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
A continuación, se muestra una lista completa de los operadores lógicos en SQLite.
运算符 | 描述 |
---|---|
Y Y | El operador AND permite la existencia de múltiples condiciones en una cláusula WHERE de una declaración SQL. |
BETWEEN | El operador BETWEEN se utiliza para buscar valores dentro de un rango de valores dados. |
EXISTS | El operador EXISTS se utiliza para buscar la existencia de filas en una tabla específica que cumpla con ciertas condiciones. |
IN | El operador IN se utiliza para comparar un valor con una lista de valores especificados. |
NOT IN | El operador NOT IN es el opuesto al operador IN, se utiliza para comparar un valor con valores que no están en una lista de valores especificados. |
LIKE | El operador LIKE se utiliza para comparar un valor con valores similares que se utilizan con operadores de comodín. |
GLOB | GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。 |
NOT | NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。 |
OR | OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。 |
IS NULL | NULL 运算符用于把某个值与 NULL 值进行比较。 |
IS | IS 运算符与 = 相似。 |
IS NOT | IS NOT 运算符与 != 相似。 |
|| | 连接两个不同的字符串,得到一个新的字符串。 |
UNIQUE | UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。 |
假设 COMPANY 表有以下记录:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
下面的示例演示了 SQLite 逻辑运算符的用法。
下面的 SELECT 语句列出了 AGE 大于等于 25 且工资大于等于 65000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
下面的 SELECT 语句列出了 AGE 大于等于 25 或工资大于等于 65000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
下面的 SELECT 语句列出了 AGE 不为 NULL 的所有记录,结果显示所有的记录,意味着没有一个记录的 AGE 等于 NULL:
sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
下面的 SELECT 语句列出了 NAME 以 'Ki' 开始的所有记录,'Ki' 之后的字符不做限制:
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%'; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0
下面的 SELECT 语句列出了 NAME 以 'Ki' 开始的所有记录,'Ki' 之后的字符不做限制:
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki'*; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0
下面的 SELECT 语句列出了 AGE 的值为 25 或 27 所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 ); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
下面的 SELECT 语句列出了 AGE 的值既不是 25 也不是 27 所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 ); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
下面的 SELECT 语句列出了 AGE 的值在 25 与 27 所有记录之间的:
sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 Y Y 27; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
下面的 SELECT 语句使用 SQL 子查询,子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录,后边的 WHERE 子句与 EXISTS 运算符一起使用,列出了外查询中的 AGE 存在于子查询返回的结果中的所有记录:
sqlite> SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000); AGE ---------- 32 25 23 25 27 22 24
下面的 SELECT 语句使用 SQL 子查询,子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录,后边的 WHERE 子句与 > 运算符一起使用,列出了外查询中的 AGE 大于子查询返回的结果中的年龄的所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0
位运算符作用于位,并逐位执行操作。真值表 & 和 | 如下:
p | q | p & q | p | q |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
假设如果 A = 60,且 B = 13,现在以二进制格式,它们如下所示:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
~A = 1100 0011
下表中列出了 SQLite 语言支持的位运算符。假设变量 A=60,变量 B=13,则:
运算符 | 描述 | 示例 |
---|---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 12,es decir, 0000 1100 |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 |
~ | 二进制补码运算符是一元运算符,具有"翻转"位效应,即0变成1,1变成0。 | (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。 |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 Se obtendrá 240,即为 1111 0000 |
>> | Operador de desplazamiento a la derecha en binario. El valor del operando izquierdo se desplaza a la derecha el número de lugares especificado por el operando derecho. | A >> 2 Se obtendrá 15,es decir, 0000 1111 |
El siguiente ejemplo muestra el uso de los operadores de bit de SQLite:
sqlite> .mode line sqlite> select 60 | 13; 60 | 13 = 61 sqlite> select 60 & 13; 60 & 13 = 12 sqlite> select (~60); (~60) = -61 sqlite> select (60 << 2); (60 << 2) = 240 sqlite> select (60 >> 2); (60 >> 2) = 15