存储在数据库表中的数据一般不是应用程序所需要的格式。
我们需要的是 直接从数据库中检索出 转换、计算、格式化的数据,而不是检索出数据,然后再客户端应用程序中重新格式化。
计算字段并不实际存在于数据库中,计算字段是运行在SELECT语句内创建的。
只有数据库知道SELECT语句中那些列是实际的表列,哪些是计算字段,从客户端来看,计算字段的数据与其他列的数据的返回方式相同。
客户端与服务器端的格式。
在SQL语句内可以完成的许多转换和格式化工作都可以直接在客户端应用程序内完成。但一般来说,在数据库服务器上完成这些操作比在客户端中完成要快的多。
拼接字段(将值联结到一起(将一个值附加到另一个值)构成单个值)
mysql中需要用特殊的Concat函数
SELECT Concat(vend_name, '(', vend_country, ')') FROM Vendors ORDER BY vend_name;
不少数据库保存填充为列宽的文本值,而实际上你要的结果不需要这些空格。RTRIM函数去除右边的空格。
SELECT Concat(RTRIM(vend_name) , '(', RTRIM(), ')') FROM Vendors ORDER BY vend_name();
TRIM函数 RTRIM(去掉右边的空格) LTRIM(去掉左边的空格) TRIM(去掉左右的空格)
使用别名 AS
SELECT Concat(RTRIM(vend_name), '(', RTRIM(vend_country), ')') AS vend_title FROM Vendors ORDER BY vend_name;
现在名为vend_title的计算字段,任何客户端应用都可以按名称引用这个列,就像它是一个实际存在的表列一样。
执行算术计算
SELECT prod_id, quantity, item_price, quantity * item_price AS expanded_price FROM OrderItems WHERE order_num = 20008;
如何测试计算
SELECT语句为测试,检验函数和计算提供了很好的方法,虽然SELECT通常用于从表中检索数据,但是省略了FROM后就是简单的访问和处理表达式。SELECT 3 * 2;
SELECT NOW();