如果表达式(expr2)和表达式(expr3)均是字符串,同时两个字符串均是忽略字母大小写的,那么返回值也是忽略字母大小写的(从 mysql 3.23.51 开始)。
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
value=compare-value 时返回 result。第二个形式当第一个为真值的 condition 出现时,返回该条件的结果。如果没有匹配的结果值,那么 else 后的结果将被返回。如果没有 else 部分,那么 null 被返回:
mysql> select case 1 when 1 then "one"
when 2 then "two" else "more" end;
-> "one"
mysql> select case when 1>0 then "true" else "false" end;
-> "true"
mysql> select case binary "b" when "a" then 1 when "b" then 2 end;
-> null
返回值的类型 (integer、double 或 string) 与第一个返回值(第一个 then 后的表达式)的类型相同。
6.3.2 字符串函数
如果返回结果的长度超过服务器参数 max_allowed_packet 的大小,字符串值函数将返回 null。查看章节 5.5.2 调节服务器参数。
对于操作字符串位置的函数,第一个位置被标记为 1。
ascii(str)-
返回字符串
str最左边的那个字符的 ascii 码值。如果str是一个空字符串,那么返回值为0。如果str是一个null,返回值也是null:mysql> select ascii('2'); -> 50 mysql> select ascii(2); -> 50 mysql> select ascii('dx'); -> 100也可参看ord()函数。 ord(str)-
如果字符串
str的最左边的字符是一个多字节的字符,根据多字节字符的成分字符的 ascii 码值通过下面的公式计算返回那个的编码:((first byte ascii code)*256+(second byte ascii code))[*256+third byte ascii code...]。如果最左边的字符不是一个多字节字符,返回值与ascii()函数相同:mysql> select ord('2'); -> 50 conv(n,from_base,to_base)-
在不同的数字基数之间转换数字。将数字
n从from_base转换到to_base,并以字符串表示形式返回。如果任何一个参数为null,那么返回值也为null。参数n被解释为是一个整数,但是也可以被指定为一个整数或一个字符串。最小基为2,最大基为36。如果to_base是一个负值,n将被看作为是一个有符号数字。否则,n被视为是无符号的。conv以 64 位精度工作:mysql> select conv("a",16,2); -> '1010' mysql> select conv("6e",18,8); -> '172' mysql> select conv(-17,10,-18); -> '-h' mysql> select conv(10+"10"+'10'+0xa,10,10); -> '40' bin(n)-
返回
n的字符串表示的二进制值形式,在这里,n长长的(bigint)数字。这个函数等价于conv(n,10,2)。如果n是一个null,返回值也是null:mysql> select bin(12); -> '1100' oct(n)-
返回
n的字符串表示的八进制值形式,在这里,n是一个长长的数字。这个函数等价于conv(n,10,8)。如果n是一个null,返回值也是null:mysql> select oct(12); -> '14' hex(n_or_s)-
如果 n_or_s 是一个数字,返回
n的字符串表示的十六进制值形式,这里n是一个长长的(bigint)数字。这个函数等价于conv(n,10,16)。 如果 n_or_s 是一个字符串,n_or_s 中的每个字符均被转换为 2 位十六进制数字,并以十六进制的字符串形式返回。这是0xff形式的字符串反转操作。mysql> select hex(255); -> 'ff' mysql> select hex("abc"); -> 616263 mysql> select 0x616263; -> "abc" char(n,...)-
char()以整数类型解释参数,返回这个整数所代表的 ascii 码值给出的字符组成的字符串。null值将被忽略:mysql> select char(77,121,83,81,'76'); -> 'mysql' mysql> select char(77,77.3,'77.3'); -> 'mmm' concat(str1,str2,...)-
将参数连接成字符串返回。如果有任何一个参数为
null,返回值也为null。可以有超过 2 个的参数。数字参数将被转换为相等价的字符串形式:mysql> select concat('my', 's', 'ql'); -> 'mysql' mysql> select concat('my', null, 'ql'); -> null mysql> select concat(14.3); -> '14.3' concat_ws(separator, str1, str2,...)-
concat_ws()支持 concat 加上一个分隔符,它是一个特殊形式的concat()。第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是null,返回值也将为null。这个函数会跳过分隔符参数后的任何null和空字符串。分隔符将被加到被连接的字符串之间:mysql> select concat_ws(",","first name","second name","last name"); -> 'first name,second name,last name' mysql> select concat_ws(",","fi