SELECT 列表中的表达式可以比单纯的列名或字符串复杂。例如,您可以使用 SELECT 列表的数字列中的数据执行计算。
为了说明您可以在 SELECT 列表中执行的数字运算,我们从 SQL Anywhere 示例数据库中产品的名称、库存数量和单价列表开始。
SELECT Name, Quantity, UnitPrice FROM Products; |
Name | Quantity | UnitPrice |
---|---|---|
Tee Shirt | 28 | 9 |
Tee Shirt | 54 | 14 |
Tee Shirt | 75 | 14 |
Baseball Cap | 112 | 9 |
... | ... | ... |
假设惯例是在某种产品的库存为十件时补充产品库存。以下查询列出在再次订购前每种产品必须卖出的数量:
SELECT Name, Quantity - 10 AS "Sell before reorder" FROM Products; |
Name | Sell before reorder |
---|---|
Tee Shirt | 18 |
Tee Shirt | 44 |
Tee Shirt | 65 |
Baseball Cap | 102 |
... | ... |
您还可以结合多个列中的值。以下查询列出库存中每种产品的总价值:
SELECT Name, Quantity * UnitPrice AS "Inventory value" FROM Products; |
Name | Inventory value |
---|---|
Tee Shirt | 252.00 |
Tee Shirt | 756.00 |
Tee Shirt | 1050.00 |
Baseball Cap | 1008.00 |
... | ... |
当表达式中有多个算术运算符时,先计算乘法、除法和模,然后计算减法和加法。当表达式中的所有算术运算符优先级级别相同时,执行顺序为从左到右。括号中的表达式的优先级高于所有其它运算符。
例如,以下 SELECT 语句计算库存中每种产品的总价值,然后从该值中减去 5 美元。
SELECT Name, Quantity * UnitPrice - 5 FROM Products; |
要确保结果正确,请尽量使用括号。以下查询与上一个查询具有相同的含义且给出的结果也相同,但语法更加精确:
SELECT Name, ( Quantity * UnitPrice ) - 5 FROM Products; |
算术运算可能会因为无法以特定的数据类型表示运算结果而溢出。发生溢出时,将返回错误而非返回值。
您可以使用字符串连接运算符来连接字符串。您可以使用 ||(由 SQL/2008 定义)或 +(受 Adaptive Server Enterprise 支持)作为连接运算符。例如,以下语句检索 GivenName 和 Surname 的值,并在结果中将二者连接在一起:
SELECT EmployeeID, GivenName || ' ' || Surname AS Name FROM Employees; |
EmployeeID | Name |
---|---|
102 | Fran Whitney |
105 | Matthew Cobb |
129 | Philip Chin |
148 | Julie Jordan |
... | ... |
虽然可以在日期和时间列上使用运算符,但此操作通常涉及函数的使用。
可以赋予列一个别名 缺省情况下,列名是 SELECT 列表中列出的表达式,但是对于计算列,使用表达式作为名称十分麻烦,并且不能提供足够的信息。
可以使用其它运算符 可使用乘法运算符将多个列组合在一起。您可以使用其它运算符,包括标准的算术运算符以及逻辑运算符和字符串运算符。
例如,以下查询列出所有客户的全名:
SELECT ID, (GivenName || ' ' || Surname ) AS "Full name" FROM Customers; |
||
运算符连接字符串。在本查询中,列的别名具有空格,因此必须用双引号括起来。此规则不仅适用于列别名,还适用于数据库中的表名和其它标识符。
可以使用函数 除了组合列之外,您可以使用多种内置函数生成所需的结果。
例如,以下查询以大写字母列出产品名称:
SELECT ID, UCASE( Name ) FROM Products; |
ID | UCASE(Products.name) |
---|---|
300 | TEE SHIRT |
301 | TEE SHIRT |
302 | TEE SHIRT |
400 | BASEBALL CAP |
... | ... |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |