主要使用数据库的内建函数完成。
使用字符串数据
SQL中默认使用单引号(或撇号)分割,所以对本身包含单引号的字符串会产生警告(比如'This string doesn't work.'
)。可以通过在单引号前再添加一个单引号作为转义符。
内建函数
quote()
可用单引号将字符串包含起来,并为字符串本身的单引号增加转义符。
可以使用concat()
函数来连接若干字符串。Oracle可以通过||
取代concat()
。SQL Server通过+
连接字符串。
返回数字的字符串函数
-
length()
函数,返回字符串的字符数(SQL Server使用len()
函数)
SELECT LENGTH(char_fld) char_length, LENGTH(vchar_fld) varchar_lenght, LENGTH(text_fld) text_length FROM string_tbl;
其中varchar和text列的长度与预期一样,但是char列中存放的字符串是使用空格向右补齐的,MySQL服务器在获取数据时会删除char类型数据的尾端空格。
-
position()
函数,返回字符在字符串中的位置(数据库中第一个字符位置号是1,而返回0则表示没有找到)。
locate()
函数从字符串中任意位置开始搜索,接受第三个参数,用于指定搜索的起始位置。
SELECT POSITION('characters' IN vchar_fld) FROM string_tbl;
SELECT LOCATE('is', vchar_fld, 5) FROM string_tbl;
-
strcmp()
函数用来比较两个字符串,返回:-1,第一个排在第二个前边;0,两个相同;1,第一个排在第二后边。
like()
函数也可以用来比较字符串。
SELECT name, name LIKE '%ns' ends_in_ns FROM department;
Oracle和SQL Server没有功能类似的函数。MySQL的strcmp()
是大小写不敏感的。
strcmp('asdf', 'ASDF')返回0.
返回字符串的字符串函数
-
concat()
向已存储的字符串后附加额外的字符。
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.
-
insert()
函数可以向字符串中间增加或替换部分字符串。接受四个参数:原始字符串、字符串操作的开始位置、需要替换的字符数及替换字符串。
`SELECT INSERT('goodbye world', 9, 0, 'cruel ') string;
使用数值数据
执行数值计算
-
mod()
求余操作 -
pow()
计算幂
控制数字精度
-
ceil()
向上取整 -
floor()
向下取整 -
round()
可以向下或向上取整,与四舍五入方式类似;同时round函数提供了向右保留多少位。
SELECT ROUND(92.89992, 2);
保留两位数的时候进行四舍五入。
处理有符号数
-
abs()
返回绝对值 -
sign()
返回数值的符号。负数时返回-1,0时返回0,正数时返回1。
使用时间数据
字符串到日期的转换
-
cast()
将字符串类型转换为datetim、date和time类型。 -
str_to_date()
将字符串转化为日期格式。
UPDATE individual SET brith_date = STR_TO_DATE('September 17, 2008', '%M %d, %Y') WHRER=cust_id= 9999;
将‘September 17,2008’转换为指定的日期格式。
- 使用内建函数获取系统时钟。
current_date()
---> 2019-11-26
current_time()
---> 19:53:12
current_timestamp()
---> 2019-11-26 19:53:12
操作时间数据
-
date_add()
为指定日期增加任意一段时间间隔(如年、月、天)并产生一个日期。
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);
-
last_day()
求的当月的最后一天。
返回字符串的时间函数
-
dayname()
确定某一日是星期几。 -
datediff()
求出两个时间之间的间隔(天)。
SELECT DATEDIFF('2009-09-03', '2009=06-24');
返回71
当交换两个参数的次序,则返回-71。
转换函数
cast()
可以进行各种类型的转换。
SELECT CAST('143244' AS SIGNED INTEGER);
服务器会从左向右试着对整个字符串进行转换,转换过程中遇到非数字字符,那么转换将终止。
SELECT CAST('999ADB223' AS UNSIGNED INTEGER);
只有999会被转换成功,剩余部分会被忽略,同时产生一个警告。
网友评论