数据库学习

数据生成、转换和操作

2019-11-25  本文已影响0人  Manfestain

主要使用数据库的内建函数完成。


使用字符串数据

SQL中默认使用单引号(或撇号)分割,所以对本身包含单引号的字符串会产生警告(比如'This string doesn't work.')。可以通过在单引号前再添加一个单引号作为转义符

内建函数quote()可用单引号将字符串包含起来,并为字符串本身的单引号增加转义符。

可以使用concat()函数来连接若干字符串。Oracle可以通过||取代concat()。SQL Server通过+连接字符串。

返回数字的字符串函数

SELECT LENGTH(char_fld) char_length, LENGTH(vchar_fld) varchar_lenght, LENGTH(text_fld) text_length FROM string_tbl;
其中varchar和text列的长度与预期一样,但是char列中存放的字符串是使用空格向右补齐的,MySQL服务器在获取数据时会删除char类型数据的尾端空格。

SELECT POSITION('characters' IN vchar_fld) FROM string_tbl;
SELECT LOCATE('is', vchar_fld, 5) FROM string_tbl;

SELECT name, name LIKE '%ns' ends_in_ns FROM department;
Oracle和SQL Server没有功能类似的函数。MySQL的strcmp()是大小写不敏感的。
strcmp('asdf', 'ASDF')返回0.

返回字符串的字符串函数

UPDATE string_tbl SET text_fld = CONCAT(text_fld, ', but now it it is longer');

concat()函数可以根据独立的数据片段构建字符串。

SELECT CONCAT(name, ' ', lname, 'has been a ', title, , 'since ', start_date) em_narrative FROM employee WHERE title = 'Teller' OR title = 'Head Teller';
> Helen Fleming has been a Head Teller since 2008-03-17.

`SELECT INSERT('goodbye world', 9, 0, 'cruel ') string;


使用数值数据

执行数值计算
控制数字精度

SELECT ROUND(92.89992, 2);保留两位数的时候进行四舍五入。

处理有符号数

使用时间数据

字符串到日期的转换

UPDATE individual SET brith_date = STR_TO_DATE('September 17, 2008', '%M %d, %Y') WHRER=cust_id= 9999;
将‘September 17,2008’转换为指定的日期格式。

操作时间数据

SELECT DATE_ADD(CURRENT_TIME(), INTERVAL 5 DAY);

可以增加时间具体到xx小时xx分钟xx秒。

UPDATE transaction SET txn_date = DATE_ADD(txn_date, INTERVAL '3:27:11' HOUR_SECOND);

返回字符串的时间函数

SELECT DATEDIFF('2009-09-03', '2009=06-24'); 返回71
当交换两个参数的次序,则返回-71。


转换函数

cast()可以进行各种类型的转换。

SELECT CAST('143244' AS SIGNED INTEGER);
服务器会从左向右试着对整个字符串进行转换,转换过程中遇到非数字字符,那么转换将终止。
SELECT CAST('999ADB223' AS UNSIGNED INTEGER);
只有999会被转换成功,剩余部分会被忽略,同时产生一个警告。

上一篇 下一篇

猜你喜欢

热点阅读