分享
 
 
 

Mysql 内部函数的使用

王朝mssql·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

Mysql 内部函数的使用

Mysql 内部函数的使用 算数运算子

+, -, *, /

除于 0 会等于 NULL。

比较运算子

任何东西跟 NULL 比较会等于 NULL。

比较字符串通常不需要注意大小写,如果要比较大小写,用 BINARY 关键词。

程序代码:

SELECT *

FROM department

WHERE name = BINARY 'marketing';

程序代码:

= 相等

!= 或 <> 不相等

< 小于

<= 小或等于

> 大于

>= 大或等于

n BETWEEN

min AND max 测试范围

n IN (set) set 可以是一系列的数值或子查询。

<=> 可以比较 NULL,如果比较两个 NULL 会传回 1。

n IS NULL 测试 n 是否 NULL。

ISNULL(n) 测试 n 是否 NULL。

逻辑运算子

传回的值有 1 (true), 0 (false, 或 NULL。

任何不是 0 或不是 NULL 的值都是 true。

程序代码:

AND 或 && n && m 和

true && true = true

false && anything = false

其它会等于 NULL

OR 或 || n || m 或

true || anything = true

NULL || false = NULL

NULL || NULL = NULL

false || false = false

NOT 或 ! NOT n 不是

!true = false

!false = true

!NULL = NULL

XOR n XOR m 不包含的 OR

true XOR true = false

true XOR false = true

false XOR true = true

NULL XOR n = NULL

n XOR NULL = NULL

控制流向的函式

IF (e1, e2, e3)

如果 e1 是 true,IF 会传回 e2,不然会传回 e3。

CASE value

WHEN [compare-value] THEN result

[WHEN [compare-value] THEN result ...]

[ELSE result]

END

或是

CASE

WHEN [condition] THEN result

[WHEN [condition] THEN result ...]

[ELSE result]

END

程序代码:

SELECT workdate, CASE

WHEN workdate < 2000-01-01 THEN 'archived'

WHEN workdate < 2003-01-01 THEN 'old'

ELSE 'current'

END

FROM assignment;

字符串函式

concat(s1, s2, ...) - 连接字符串 s1 和 s2...

conv(n, original_base, new_base) - 转换数字 n 从本来的 base 到新的 base

length(s) - 找字符串的长度

load_file(filename) - 依照字符串传回档案的内容

locate(needle, haystack, position) - 传回 needle 字符串的开始位置,在 haystack 字符串里,从 position 开始

lower(s) and upper(s) - 转换 s 到小写或大写

quote(s) - 跳脱 s 字符串,让它可以安全输入数据库

replace(target, find, replace) - 传回 target 字符串,将 find 字符串覆盖成 replace 字符串

soundex(s) - 传回跟 s 类似的 soundex 字符串。soundex 是字符串的发音

substring(s, position, length) - 传回字符串里的字符串,s 是本来的字符串,position 是开始的位置,length 是传回的字数

trim(s) - 移除开头跟字尾的空格符。也可以用 rtrim() 或 ltrim()

字符串比较的函式

LIKE - 利用通配字符来进行比较

RLIKE - 利用正规表示法来进行比较

STRCMP - 比较字符串,类似 C 里面的 strcmp()

MATCH - 进行 full-text 比较

利用通配字符来进行比较

程序代码:

SELECT *

FROM department

WHERE name LIKE '%research%';

% 会吻合任何字数,包括 0。

_ 会吻合单一字数, _at 会吻合 cat, mat, bat...

利用正规表示法来进行比较

RLIKE 可以用来吻合正规表示法。

'cat' 会吻合 'catacomb' 和 'the cat sat on the mat'。

如果只要吻合 'cat',用 '^cat$'。

^ 表示在吻合的字符串开头是 'cat'。

$ 表示在吻合的字符串最后是 'cat'。

. 可以用来代表通配字符,'.at' 会吻合 'cat', 'bat', 'mat'。

* 表示字符可以出现零或多次,'n*' 会吻合 '', 'nn', 'nnn'。

() 会归类字符,'(cat)*' 会吻合 '', 'cat', 'catcat', 'catcatcat'。

.* 会吻合任何字或字符串。

+ 表示在他之后的字或字符串会重复一或多次。

? 表示吻合一或零次。

列出特定的范围,'(cat)(2,4)' 会吻合 'catcat', 'catcatcat', 和 'catcatcatcat'。

[] 可以列出一系列的文字,'[a-z]' 会吻合任何字母,'[a-z]*' 会吻合任何数量的字母。

文字类别,[[:alnum:]] 会吻合任何字母和数字的文字。

程序代码:

SELECT *

FROM department

WHERE name RLIKE 'an';

这会吻合全部有包括 'an' 的部门。

用 STRCMP() 来比较字符串

STRCMP(s1, s2)

如果字符串相同会传回 0,-1 如果 s1 比 s2 小 (s1 比 s2 早出现)。

1 如果 s1 比 s2 大 (s1 比 s2 晚出现)。

程序代码:

SELECT STRCMP('cat', 'cat');

// 传回 0

SELECT STRCMP('cat', 'dog');

// 传回 -1

SELECT STRCMP('cat', 'ant');

// 传回 1

数字函式

abs(n)

传回 n 的正数

ceiling(n)

n rounded up to the nearest integer

floor(n)

n rounded down to the nearest integer

mod(n,m) 和 div

这两个函式会将 n 除于 m。div 传回商数,mod() 会传回剩余数。

power(n,m)

n to the power of m

rand(n)

传回 0 到 1 的随意数。n 可以不提供,如果提供会用来产生随意数。

相同的 n 会产生相同的随意数。

round(n[,d])

n rounded to the nearest integer. if supply d, n will be rounded to d decimal places.

sqrt(n)

传回 n 的平方

mod() 可以是 mod(9,2) 或 9 mod 2 或 9 % 2。

div 只能用 9 div 2。

程序代码:

SELECT 9 mod 2;

// 传回 1

SELECT 9 div 2;

// 传回 4

日期和时间函式

adddate(date, INTERVAL n type) 和 subdate(date, INTERVAL n type)

这些函式可以用来增加和减少日期。从 date 的日期开始计算,然后增加或减少 INTERVAL 后的日期范围。

你必须提供 n 和他的类型。类型可以是 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, MINUTE:SECOND (m:s),

HOUR:MINUTE (h:m), DAY_HOUR(d h), YEAR_MONTH (y-m), HOUR_SECOND (h:m:s), DAY_MINUTE (d h:m),

DAY_SECOND (d h:m:s)。

curdate(), curtime(), now()

这些函式会传回目前的日期,目前的时间,还有时间和日期。

date_format(date, format) 和 time_format(time, format)

这些可以用来改变日期和时间的格式。

你必须提供格式的字符串,譬如说 date_format(workdate, '%W %D of %M, %Y'),

这会给你 'Monday 16th of June, 2003)。

全部可用的格式请看 MySQL 的手册。

dayname(date)

传回日期的名称,例如 Monday。

extract(type FROM date)

传回 date 的日期,譬如说 YEAR,他就会传回那个日期的年数。

函式可用的类型跟 adddate() 和 subdate() 的类型相同。

unix_timestamp([date])

传回目前的 Unix 时间。如果跟 date 一起使用,传回的日期会从 date 的日期开始计算。

范例:

程序代码:

SELECT adddate('1999-01-01', INTERVAL '1-6' YEAR_MONTH);

// 传回 2000-07-01

SELECT unix_timestamp(adddate('1999-01-01', INTERVAL '1-6' YEAR_MONTH);

// 传回 962373600

可以用 PHP 的 date() 函式来将 Unix 的时间格式化。

cast 函式

cast 可以用来改变类型,用 cast() 和 convert() 函式。

两个函式相同,但是不同的语法构造。

cast(expression AS type)

convert(expression, type)

cast() 是依照 ANSI 的规格,convert() 是依照 ODBC 的规格。

类型可以是 BINARY, CHAR, DATE, DATETIME, SIGNED (INTEGER), 和 UNSIGNED (INTEGER)。

通常 MySQL 会自动帮你改变类型。

其它函式

benchmark(count, expression)

这个函式是用来测试查询的速度,只会传回 0 值。

encrypt(s[,salt])

将 s 加密用 Unix 的加密系统。salt 字符串是两个字符的字符串,可以不用。

如果没有 crypt 功能,像在 Windows 系统,这个函式会传回 NULL。

found_rows()

传回字段的数量,如果没有用 LIMIT。

只有在 SELECT 里使用 SQL_CALC_FOUND_ROWS 才能用这个函式。

last_insert_id()

传回最后产生的 AUTO_INCREMENT 值。

md5(s)

传回 128bit MD5 的加密字符串。

password(s)

计算 s 的密码,不建议用这个函式来储存密码。

用于 GROUP BY 的函式

这些还是专门为了 GROUP BY 而写的。

avg(column) - 传回字段的平均值

count(column) - 传回字段的数量

min(column) - 传回字段的最小值

max(column) - 传回字段的最大值

std(column) - 传回字段的标准差

sum(column) - 传回字段的总数

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有