查看完整版本: MYSQL部分函数与操作符

php 2007-8-20 09:26

MYSQL部分函数与操作符

MYSQL进行数值比较的规则:
    1.若有一个或两个参数为 NULL,[color=#ff12]除非NULL-safe <=> 等算符,则比较运算的结果为NULL[/color]。
    2.若同一个比较运算中的两个参数都是字符串,则按照字符串进行比较。若两个参数均为整数,则按照整数进行比较。
    3.[color=#080ff]十六进制值在不需要作为数字进行比较时,则按照二进制字符串进行处理[/color]。
    4.假如参数中的一个为 TIMESTAMP 或 DATETIME 列,而其它参数均为常数, 则在进行比较前将常数转为 [color=#080ff]timestamp[/color]。这样做的目的是为了使ODBC的进行更加顺利。
注意,[color=#ff12]这不适合IN()中的参数![/color]为了更加可靠,在进行对比时通常使用完整的 datetime/date/time字符串。

[color=#ff12]    5.在其它情况下,参数作为浮点数进行比较[/color]。   
在默认状态下,字符串比较不区分大小写,并使用现有字符集(默认为cp1252 Latin1,同时对英语也适合)

    [color=#080ff]<=> [/color]
    NULL-safe equal.这个操作符和=操作符执行相同的比较操作,不过在两个操作码均为NULL时,其所得值为1而不为NULL,而当一个操作码为NULL时,其所得值为0而不为NULL。
    [color=#080ff]<>[/color]
    不等于,不是使用!=。
    [color=#080ff]IS [/color][i]boolean_value[/i][color=#080ff] IS NOT [/color][i][color=#080ff]boolean_value[/color]
    [/i]根据一个bool值来检验值。布尔值可以是TRUE、FALSE或UNKNOWN。如
    mysql> [b]SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;[/b]
        -> 1, 1, 1
    MYSQL支持IS NULL的一些额外特性:
    在一个值产生后,立即运行一个以下格式的语句,从而找到最新AUTO_INCREMENT 值的所在行:
   
SELECT * FROM [i]tbl_name[/i] WHERE [i]auto_col[/i] IS NULL
    对于命名为NOT NULL 的DATE 和DATETIME列,可通过使用如下的 语句找到特定日期 '0000-00-00':
   
SELECT * FROM [i]tbl_name[/i] WHERE [i]date_column[/i] IS NULL
(运行这一步需要使用一些 ODBC 应用软件,因为 ODBC本身不支持 一个 '0000-00-00'的时间值。

)  

    [color=#080ff]COALESCE([/color][i]value[/i][color=#080ff],...)[/color]

    返回值为列表当中的第一个非 NULL值,在没有非NULL 值得情况下返回值为 NULL 。
    [color=#080ff]GREATEST([i]value1[/i],[i]value2[/i],...)[/color]

当有2或多个参数时,返回值为最大(最大值的)参数。比较参数所依据的规律同LEAST()相同.
   
[color=#080ff]INTERVAL([/color][i]N[/i][color=#080ff],[/color][i]N1[/i][color=#080ff],[/color][i]N2[/i][color=#080ff],[/color][i]N3[/i][color=#080ff],...)
[/color]    假如[i]N[/i] < [i]N1[/i][i],[/i]则返回值为0;假如[i]N[/i] < [i]N2[/i] 等等,则返回值为1;假如[i]N[/i]
为NULL,则返回值为 -1 。所有的参数均按照整数处理。为了这个函数的正确运行,必须满足 [i]N1[/i] < [i]N2[/i] < [i]N3[/i] < ……< [i]Nn[/i] 。其原因是使用了二分查找(极快速).如:
mysql> [b]SELECT INTERVAL(10, 1, 10, 100, 1000);[/b]
    -> 2

    [color=#080ff]LEAST([/color][i]value1[/i][color=#080ff],[/color][i]value2[/i][color=#080ff],...)[/color]
    在有两个或多个参数的情况下, 返回值为最小 (最小值)
参数。用一下规则将自变量进行对比:
    1.假如返回值被用在一个 INTEGER 语境中,或是所有参数均为整数值,则将其作为整数值进行比
    2.较。假如返回值被用在一个 REAL语境中,或所有参数均为实值,则 将其作为实值进行比较。   
    3.假如任意一个参数是一个区分大小写的字符串,则将参数按照区分大小写的字符串进行比较。
    4.在其它 情况下,将参数作为区分大小写的字符串进行比较。
    假如任意一个自变量为NULL,则 LEAST()的返回值为NULL 。

    [color=#080ff]XOR[/color]

逻辑XOR。当任意一个操作数为 NULL时,返回值为NULL。对于非   NULL 的操作数,假如一个奇数操作数为非零值,则计算所得结果为  1 ,否则为  0 。

    [color=#080ff]ASCII([/color][i]str[/i][color=#080ff])[/color]
    返回值为字符串[i]str[/i]
的最左字符的数值。假如[i]str[/i]为空字符串,则返回值为 0 。假如[i]str[/i]
为NULL,则返回值为 NULL。 ASCII()用于带有从 0到255的数值的字符。
    [color=#080ff]BIN(N)[/color]

返回值为[i]N[/i]的二进制值的字符串表示,其中  [i]N[/i] 为一个longlong (BIGINT) 数字。这等同于 CONV([i]N[/i],10,2)。假如[i]N[/i]
为NULL,则返回值为 NULL。
    [color=#080ff]BIT_LENGTH([/color][i]str[/i][color=#080ff])[/color]
    返回值为二进制的字符串[i]str [/i]长度。
    [color=#080ff]CHAR([i]N[/i],... [USING [i]charset[/i]])[/color]
    CHAR()将每个参数[i]N[/i]理解为一个整数,其返回值为一个包含这些整数的代码值所给出的字符的字符串。NULL值被省略。
    大于 255的CHAR()参数被转换为多结果字符。 例如,CHAR(256) 相当于 CHAR(1,0), 而CHAR(256*256) 则相当于 CHAR(1,0,0).
    CHAR()的返回值为一个二进制字符串。可选择使用USING语句产生一个给出的字符集中的字符串:
mysql> [b]SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));[/b]
    CHAR_LENGTH([i]str[/i])和 CHARACTER_LENGTH([i]str[/i])
    返回值为字符串[i]str[/i]
的长度,长度的单位为字符。一个多字节字符算作一个单字符。[i]对于一个[/i]包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。

    COMPRESS([i]string_to_compress[/i])
    压缩一个字符串。这个函数要求 MySQL已经用一个诸如zlib的压缩库压缩过。
否则,返回值始终是NULL。UNCOMPRESS() 可将压缩过的字符串进行解压缩。  
    压缩后的字符串的内容按照以下方式存储:
    空字符串按照空字符串存储。
    非空字符串未压缩字符串的四字节长度进行存储(首先为低字节),后面是压缩字符串。如果字符串以空格结尾,就会在后加一个"."号,以防止当结果值是存储在CHAR或VARCHAR类型的字段列时,出现自动把结尾空格去掉的现象。(不推荐使用 CHAR 或VARCHAR 来存储压缩字符串。最好使用一个 BLOB 列代替)。
   [color=#080ff] CONCAT_WS([/color][i]separator[/i][color=#080ff],[/color][i]str1[/i][color=#080ff],[/color][i]str2[/i][color=#080ff],...)[/color]
    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。
第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。 CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
    [color=#080ff]LENGTH([/color][i]str[/i][color=#080ff])[/color]
    返回值为字符串[i]str[/i]
的长度,单位为字节。一个多字节字符算作多字节。这意味着 对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。
    [color=#080ff]LOAD_FILE([/color][i]file_name[/i][color=#080ff])[/color]
    读取文件并将这一文件按照字符串的格式返回。 文件的位置必须在服务器上,你必须为文件制定路径全名,而且你还必须拥有FILE 特许权。文件必须可读取,文件容量必须小于 max_allowed_packet字节。
    若文件不存在,或因不满足上述条件而不能被读取, 则函数返回值为 NULL。                INSTR([i]str[/i],[i]substr[/i])
    返回字符串 [i]str[/i]
中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。

  LPAD([i]str[/i],[i]len[/i],[i]padstr[/i])--从右对应的是RPAD
    返回字符串 [i]str[/i], 其左边由字符串[i]padstr[/i]
填补到[i]len[/i]
字符长度。假如[i]str[/i]
的长度大于[i]len[/i], 则返回值被缩短至 [i]len[/i]
字符。
    MID([i]str[/i],[i]pos[/i],[i]len[/i])
    MID([i]str[/i],[i]pos[/i],[i]len[/i]) 是 SUBSTRING([i]str[/i],[i]pos[/i],[i]len[/i])的同义词。

SUBSTRING([i]str[/i],[i]pos[/i])
    SUBSTRING([i]str[/i] FROM [i]pos[/i])
    SUBSTRING([i]str[/i],[i]pos[/i],[i]len[/i])
    SUBSTRING([i]str[/i] FROM [i]pos[/i] FOR [i]len[/i])
    不带有[i]len[/i]
参数的格式从字符串[i]str[/i]返回一个子字符串,起始于位置 [i]pos[/i]。带有[i]len[/i]参数的格式从字符串[i]str[/i]返回一个长度同[i]len[/i]字符相同的子字符串,起始于位置 [i]pos[/i]。 使用 FROM的格式为标准 SQL 语法。也可能对[i]pos[/i]使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的[i]pos[/i]
字符,而不是字符串的开头位置。
    [color=#080ff]SUBSTRING_INDEX([/color][i]str[/i][color=#080ff],[/color][i]delim[/i][color=#080ff],[/color][i]count[/i][color=#080ff])[/color]
    在定界符 [i]delim[/i]
以及[i]count[/i]
出现前,从字符串[i]str[/i]返回自字符串。若[i]count[/i]为正值,则返回最终定界符(从左边开始)左边的一切内容。若[i]count[/i]为负值,则返回定界符(从右边开始)右边的一切内容。

    [color=#080ff]TRIM([{BOTH | LEADING | TRAILING} [[i]remstr[/i]] FROM] [i]str[/i]) TRIM([i]remstr[/i] FROM] [i]str[/i])[/color]
    返回字符串 [i]str[/i]
, 其中所有[i]remstr[/i]
前缀和/或后缀都已被删除。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH 。 [i]remstr[/i]
为可选项,在未指定情况下,可删除空格。        PASSWORD([i]str[/i])
    从原文密码[i]str[/i]
计算并返回密码字符串,当参数为 NULL 时返回 NULL。这个函数用于用户授权表的Password列中的加密MySQL密码存储 mysql> [b]SELECT PASSWORD('badpwd');[/b]
    -> '7f84554057dd964b'
PASSWORD() 加密是单向的 (不可逆 )。
页: [1]
查看完整版本: MYSQL部分函数与操作符