前边我们讲解了一些常用的函数,这些函数不是在各个主流数据库系统中有着相同的名称和用法,就是在各个主流数据库系统中有等价的实现,这些函数可以基本满足我们大部分需求。不过在各个主流数据库系统还提供了一些自身独有的函数,这些函数在其他的数据库系统中一般都没有等价的实现,使用这些函数以后会给系统的跨数据库移植带来一定的麻烦,不过如果系统对跨数据库移植没有要求的话,那么使用这些函数不仅能提高开发速度,而且能够更好发挥数据库系统的性能,所以了解它们还是非常有必要的,因此这里我们专门安排一节来介绍这些函数。

  • MYSQL中的独有函数

  • IF()函数

使用CASE函数可以实现非常复杂的逻辑判断,可是若只是实现“如果符合条件则返回A,否则返回B”这样简单的判断逻辑的话,使用CASE函数就过于繁琐,如下:


CASE WHEN condition THENA ELSE B END

MYSQL提供了IF()函数用于简化这种逻辑判断,其语法格式如下:


IF(expr1,expr2,expr3)

如果expr1 为真(expr1 <> 0 以及expr1<>NULL),那么IF()返回expr2,否则返回expr3。IF()返回一个数字或字符串,这取决于它被使用的语境。

这里使用IF()函数来判断一个人的体重是否太胖,而如果体重大于50则认为太胖,否则认为正常:


SELECT FName,FWeight,IF(FWeight>50,"太胖","正常") AS ISTooFat FROM T_Person 

执行完毕我们就能在输出结果中看到下面的执行结果:


FName FWeight ISTooFatTom 56.67 太胖Jim 36.17 正常Lily 40.33 正常Kelly 46.23 正常Sam 48.68 正常Kerry 66.67 太胖Smith 51.28 太胖BillGates 60.32 太胖
  • CONV()函数

CONV()函数用于对数字进行进制转换,比如将十进制的26转换为2进制显示,其参数格式如下:


CONV(N,from_base,to_base)

将数字N从from_base进制转换到to_base进制,并以字符串表示形式返回。from_base和to_base的最小值为2,最大值为36。如果to_base是一个负值,N 将被看作为是一个有符号数字。否则,N 被视为是无符号的。

下面的SQL语句用于将十进制的26转换为2进制显示、将十六进制的7D转换为八进制显示:


SELECT CONV("26",10,2), CONV(26,10,2),CONV("7D",16,8) 

可以看到数字N既可以为字符串也可以为整数,如果为整数则它被解释为十进制数字。

执行完毕我们就能在输出结果中看到下面的执行结果:


CONV("26",10,2) CONV(26,10,2) CONV("7D",16,8) 11010 11010 175 

下面的SQL语句用来将每个人的体重四舍五入为整数,然后以二进制的形式显示它们:


SELECT FWeight,Round(FWeight),CONV(Round(FWeight),10,2) FROM T_Person 

执行完毕我们就能在输出结果中看到下面的执行结果:


FWeight Round(FWeight) CONV(Round(FWeight),10,2)56.67 57 11100136.17 36 10010040.33 40 10100046.23 46 10111048.68 49 11000166.67 67 100001151.28 51 11001160.32 60 111100

在日常系统开发过程中,我们最常进行的进制转换是将十进制的整数转换为十六进制显示,如果使用CONV()函数来进行转换的话比较麻烦,为此MYSQL提供了简化调用的函数BIN(N)、OCT(N)、HEX(N)它们分别用于返回N的字符串表示的二进制、八进制值和十六进制形式。下面的SQL语句将每个人的体重四舍五入为整数,然后以二进制、八进制值和十六进制的形式显示它们:


SELECT FWeight,Round(FWeight),BIN(Round(FWeight)) as b,OCT(Round(FWeight)) as o,HEX(Round(FWeight)) as h FROM T_Person 。在MYSQL中提供了LPAD()、RPAD()函数用于对字符串进行左填充和右填充,其参数格式如下: ```java LPAD(str,len,padstr) RPAD(str,len,padstr) 

用字符串padstr 对str 进行左(右)边填补直至它的长度达到len个字符长度,然后返回str。如果str的长度长于len",那么它将被截除到len 个字符。

下面的SQL语句分别将每个人的姓名用星号左填充和右填充到5个字符:


SELECT FName,LPAD(FName,5,"*"),RPAD(FName,5,"*") FROM T_Person 

执行完毕我们就能在输出结果中看到下面的执行结果:


FName LPAD(FName,5,"*") RPAD(FName,5,"*")Tom **Tom Tom**Jim **Jim Jim**Lily *Lily Lily*Kelly Kelly KellySam **Sam Sam** Kerry Kerry Kerry Smith Smith Smith BillGates BillG BillG 
  • REPEAT()函数

REPEAT()函数用来得到一个子字符串重复了若干次所组成的字符串,其参数格式如下:


REPEAT(str,count)参数str为子字符串,而count为重复次数。下面的SQL语句用于得到一个由5个星号以及一个由3个“OK”组成的字符串:```java  SELECT REPEAT("*",5), REPEAT("OK",3) 

执行完毕我们就能在输出结果中看到下面的执行结果:


REPEAT("*",5) REPEAT("OK",3)

* OKOKOK

MYSQL中提供了一个简化REPEAT()的函数SPACE(N),它用来得到一个有N 空格字符组成的字符串,可以看做是REPEAT(" ",N)的等价形式。

  • 字符串颠倒

REVERSE()函数用来将一个字符串的顺序颠倒,下面的SQL语句将所有人员的姓名进行了颠倒:


SELECT FName, REVERSE(FName) FROM T_Person

执行完毕我们就能在输出结果中看到下面的执行结果:


FName REVERSE(FName)Tom moTJim miJLily yliLKelly ylleKSam maSKerry yrreKSmith htimSBillGates setaGlliB
  • 字符串的集合操作

使用CASE函数可以完成“将1翻译成VIP客户,将2翻译成高级客户,将3翻译成普通客户”这样的任务,但是使用起来比较麻烦,MYSQL中提供了几个字符串集合操作函数,分别是ELT()、FIELD()和FIND_IN_SET(),它们将“VIP客户”、“高级客户”、“普通客户”这样的匹配目标字符串当作集合处理,而将“1、2、3”这样的数字当成待匹配项。

首先来看ELT()函数,它的参数格式如下:


ELT(N,str1,str2,str3,...)

如果N = 1,返回str1,如果N = 2,返回str2,等等。如果N 小于1 或大于参数的数量,返回NULL。下面的SQL演示了ELT()函数的使用:


SELECT ELT(2, "ej", "Heja", "hej", "foo"),ELT(4, "ej", "Heja", "hej", "foo") 

执行完毕我们就能在输出结果中看到下面的执行结果:


ELT(2, "ej", "Heja", "hej", "foo") ELT(4, "ej", "Heja", "hej", "foo") Heja foo 

ELT()函数在制作报表的时候非常有用。比如表T_Customer中的FLevel字段是整数类型,它记录了客户的级别,如果为1则是VIP客户,如果为2则是高级客户,如果为3则是普通客户,在制作报表的时候显然不应该把1、2、3这样的数字显示到报表中,而应该显示相应的文字,这里就可以使用ELT()函数进行处理,SQL语句如下:


SELECT FName,ELT(FLevel, "VIP客户", "高级客户", "普通客户") FROM T_Customer 

与ELT()函数正好相反,FIELD()函数用于计算字符串在一个字符串集合中的位置,它可以看做是ELT()的反函数。FIELD()函数的参数格式如下:


FIELD(str,str1,str2,str3,...)

返回str在列表str1, str2, str3, ... 中的索引。如果没有发现匹配项,则返回0。下面的SQL演示了FIELD ()函数的使用:


SELECT FIELD("vip","normal","member","vip") as f1,FIELD("ej", "Hej", "ej", "Heja", "hej", "foo") as f2 

执行完毕我们就能在输出结果中看到下面的执行结果:


f1 f23 2

在数据库中有时存储的是字符串,有的情况下需要将字符串转换成整数,方便后续系统的处理,这时就可以使用CASE()函数,但是如果是在MYSQL中,则使用FIELD()函数更方便。假设客户信息表T_Customer中的FCustomerTypeName保存的是“VIP”、“会员”、“普通客户”这样的文本信息,我们可以使用下面的SQL语句将这些文本信息转换为整数来表示:


SELECT FName,FIELD(FCustomerTypeName, "VIP", "会员", "普通客户") FROM T_Customer 

FIELD()函数将中的参数个数是不确定的,但是在使用的时候参数的个数又是确定,是不能在运行时动态改变的。有时待匹配的字符串集合也是不确定的,这时就无法使用FIELD()函数函数了,MYSQL中提供了FIND_IN_SET()函数,它用一个分隔符分割的字符串做为待匹配字符串集合,它的参数格式如下:


FIND_IN_SET(str,strlist)

如果字符串str 在由N 个子串组成的列表strlist 中,返回它在strlist中的索引次序(从1开始计数)。一个字符串列表是由通过字符“,” 分隔的多个子串组成。如果str 在不strlist 中或者如果strlist 是一个空串,返回值为 0。如果任何一个参数为NULL,返回值也是NULL。如果第一个参数包含一个“,”,这个函数将抛出错误信息。下面的SQL演示了FIELD ()函数的使用:


SELECT FIND_IN_SET("b","a,b,c,d") as f1,FIND_IN_SET("d","a,b,c,d") as f2,FIND_IN_SET("w","a,b,c,d") as f3 

执行完毕我们就能在输出结果中看到下面的执行结果:


f1 f2 f32 4 0
  • 计算集合中的最大最小值

MYSQL中的GREATEST()函数和LEAST()函数用于计算一个集合中的最大和最小值,它们的参数个数都是不定的,也就是它们可以对多个值进行比较。使用演示如下:


SELECT GREATEST(2,7,1,8,30,4,3,99,2,222,12),LEAST(2,7,1,8,30,4,3,99,2,222,12) 

执行完毕我们就能在输出结果中看到下面的执行结果:


GREATEST(2,7,1,8,30,4,3,99,2,222,12) LEAST(2,7,1,8,30,4,3,99,2,222,12)222 1
  • 辅助功能函数

DATABASE()函数返回当前数据库名;VERSION()函数以一个字符串形式返回MySQL服务器的版本;USER()函数(这个函数还有SYSTEM_USER、SESSION_USER两个别名)返回当前MySQL 用户名。下面的SQL语句演示了这几个函数的使用:


SELECT DATABASE(),VERSION(),USER()

执行完毕我们就能在输出结果中看到下面的执行结果:


DATABASE() VERSION() USER()demo 5.0.27-community-nt yzk@192.168.88.2 

ENCODE(str,pass_str)函数使用pass_str 做为密钥加密str,函数的返回结果是一个与string 一样长的二进制字符。如果希望将它保存到一个列中,需要使用BLOB列类型。

与ENCODE()函数相反,DECODE()函数使用pass_str 作为密钥解密经ENCODE加密后的字符串crypt_str。

下面的SQL语句演示了这两个函数的使用:


SELECT FName,Length(ENCODE(FName,"aha")),DECODE(ENCODE(FName,"aha"),"aha") FROM T_Person 

执行完毕我们就能在输出结果中看到下面的执行结果:


FName Length(ENCODE(FName,"aha")) DECODE(ENCODE(FName,"aha"),"aha")Tom 3 TomJim 3 Jim Lily 4 Lily Kelly 5 Kelly Sam 3 Sam Kerry 5 Kerry Smith 5 Smith BillGates 9 BillGates 

除了加解密函数,MYSQL中还提供了对摘要算法的支持,MD5(string)、SHA1(string)两个函数就是分别用来使用MD5算法和SHA1算法来进行字符串的摘要计算的函数,下面的SQL语句用来计算每个人的姓名的MD5摘要和SHA1摘要:


SELECT FName,MD5(FName),SHA1(FName) FROM T_Person

使用UUID算法来生成一个唯一的字符串序列被越来越多的开发者所使用,MYSQL中也提供了对UUID算法的支持,UUID()函数就是用来生成一个UUID字符串的,使用方法如下:


SELECT UUID(),UUID()

执行完毕我们就能在输出结果中看到下面的执行结果(由于UUID算法生成的字符串是全局唯一的,所以你的运行结果会与这里显示的不同):


UUID() UUID()d7495ecd-1863-102b-9b74-218a53021251 d7495ef7-1863-102b-9b74-218a53021251
  • MSSQLServer中的独有函数

  • PATINDEX()函数

MSSQLServer的CHARINDEX()函数用来计算字符串中指定表达式的开始位置,它是一种确定值的匹配,有时我们需要按照一定模式进行匹配,比如“计算字符串中第一个长度为2并且第二个字符为m的子字符串的位置”,这时使用CHARINDEX()函数就不凑效了。

MSSQLServer中PATINDEX()函数就是用来进行这种模式字串匹配的,其参数格式如下:


PATINDEX ( "%pattern%" , expression )

它返回指定表达式中模式"%pattern%"第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。在模式中可以使用通配符。

下面的SQL语句用来查找每个人的姓名中第一个长度为2并且第二个字符为m的子字符串的位置:


SELECT FName,PATINDEX("%_m%",FName) FROM T_Person

执行完毕我们就能在输出结果中看到下面的执行结果:


FNameTom 2Jim 2Lily 0Kelly 0Sam 2Kerry 0Smith 1BillGates 0
  • REPLICATE ()函数

REPLICATE()函数用来得到一个子字符串重复了若干次所组成的字符串,它和MYSQL中的REPEAT()函数是一样的,其参数格式如下:


REPLICATE (str,count)

参数str为子字符串,而count为重复次数。

下面的SQL语句用于将每个人的姓名重复n次,n等于体重与20的整除结果:


SELECT FName,FWeight,CAST(FWeight/20 AS INT),REPLICATE(FName, CAST(FWeight/20 AS INT)) FROM T_Person 

和MYSQL一样,MYSQL中同样提供了一个简化REPLICATE()调用的函数SPACE(N),它用来得到一个有N空格字符组成的字符串,可以看做是REPLICATE (" ",N)的等价形式。

  • 字符串颠倒

REVERSE()函数用来将一个字符串的顺序颠倒,下面的SQL语句将所有人员的姓名进行了颠倒:


SELECT FName, REVERSE(FName) FROM T_Person

执行完毕我们就能在输出结果中看到下面的执行结果:


FNameTom moTJim miJLily yliLKelly ylleKSam maSKerry yrreKSmith htimSBillGates setaGlliB
  • ISDATE()函数

ISDATE()函数用来确定输入表达式是否为有效日期。如果输入表达式是有效日期,那么ISDATE 返回 1;否则,返回 0。其参数格式如下:


ISDATE ( expression )

expression参数为要验证其是否为日期的表达式。expression可以是text、ntext表达式和image表达式以外的任意表达式,可以隐式转换为nvarchar。

下面的SQL语句演示了这个函数的使用:


SELECT ISDATE(NULL) as d1,ISDATE("13/43/3425") as d2, ISDATE("1995-10-1a") as d3, ISDATE(19920808) as d4, ISDATE("1/23/95") as d5, ISDATE("1995-10-1") as d6, ISDATE("19920808") as d7, ISDATE(" Abc") as d8 

执行完毕我们就能在输出结果中看到下面的执行结果:


d1 d2 d3 d4 d5 d6 d7 d80 0 0 1 0 1 1 0
  • ISNUMERIC()函数

ISNUMERIC ()函数用来确定表达式是否为有效的数值类型。如果输入表达式的计算值为有效的整数、浮点数、money 或decimal 类型时,ISNUMERIC 返回 1;否则返回 0。

其参数格式如下:


ISNUMERIC ( expression )

expression参数为要计算的表达式。下面的SQL语句演示了这个函数的使用:

SELECT

ISNUMERIC(NULL) as d1,

ISNUMERIC("13/43/3425") as d2,

ISNUMERIC("30a.8") as d3,

ISNUMERIC(19920808) as d4,

ISNUMERIC("1/23/95") as d5,

ISNUMERIC("3E-3") as d6,

ISNUMERIC("19920808") as d7,

ISNUMERIC("-30.3") as d8


执行完毕我们就能在输出结果中看到下面的执行结果:```java  d1 d2 d3 d4 d5 d6 d7 d80 0 0 1 0 1 1 1
  • 辅助功能函数

APP_NAME()函数返回当前会话的应用程序名称;CURRENT_USER函数(注意这个函数不能带括号调用)返回当前登陆用户名;HOST_NAME()函数返回工作站名。下面的SQL语句演示了这几个函数的使用:


SELECT APP_NAME() as appname,CURRENT_USER as cu,HOST_NAME() as hostname 

执行完毕我们就能在输出结果中看到下面的执行结果:


appname cu hostnamejTDS dbo YANGZK

与MYSQL类似,MSSQLServer 中同样提供了生成全局唯一字符串的函数NEWID(),下面生成三个UUID 字符串:

SELECT NEWID() AS id1,NEWID() AS id2

执行完毕我们就能在输出结果中看到下面的执行结果:


id1 id2705FAA88-12B9-4C52-9B77-589DD20256C3 A110A5E5-92C7-461F-91F8-BF35129FE7B4 
  • Oracle中的独有函数

  • 填充函数

与MYSQL类似,Oracle中也提供了用于进行字符串填充的函数LPAD()、RPAD(),其参数格式如下:


LPAD(char1,n [,char2])RPAD(char1, n [,char2]) 

与MYSQL中不同的是,Oracle中LPAD()和RPAD()函数的第三个参数是可以省略的,如果省略第三个参数,则使用单个空格进行填充。

下面的SQL语句分别将每个人的姓名用星号左填充和井号右填充到5个字符:


SELECT FName,LPAD(FName,5,"*"),RPAD(FName,5,"#") FROM T_Person 

执行完毕我们就能在输出结果中看到下面的执行结果:


FNAME LPAD(FNAME,5,*) RPAD(FNAME,5,#)Tom **Tom Tom##Jim **Jim Jim## Lily *Lily Lily# Kelly Kelly Kelly Sam **Sam Sam## Kerry Kerry Kerry Smith Smith Smith BillGates BillG BillG 
  • 返回当月最后一天

Oracle中的LAST_DAY()函数可以用来计算指定日期所在月份的最后一天的日期。下面的SQL语句用于计算每个人出生时当月的最后一天的日期:


SELECT FName,FBirthDay,LAST_DAY(FBirthDay) FROM T_Person WHERE FBirthDay IS NOT NULL 
  • 计算最大最小值

和MYSQL类似,Oracle中提供了用来计算一个集合中的最大和最小值的GREATEST()函数和LEAST()函数。其使用方法和MYSQL一致:


SELECT GREATEST(2,7,1,8,30,4,5566,99,2,222,12),LEAST(2,7,1,8,30,4,3,99,-2,222,12) FROM DUAL 

执行完毕我们就能在输出结果中看到下面的执行结果:


GREATEST(2,7,1,8,30,4,5566,99,2,222,12) LEAST(2,7,1,8,30,4,3,99,-2,222,12)5566 -2
  • 辅助功能函数

USER函数用来取得当前登录用户名,注意使用这个函数的时候不能使用括号形式的空参数列表,也就是USER()这种使用方式是不对的。正确使用方式如下:


SELECT USER FROM DUAL

执行完毕我们就能在输出结果中看到下面的执行结果:


USERSYS

USERENV()函数用来取得当前登录用户相关的环境信息,这个函数的返回值为字符串类型,需要根据情况将返回值转换为合适的类型。它的参数格式如下:


USERENV(option)

option参数为要取得的环境信息的名称,可取值如下:


可取值说明"ISDBA" 如果当前登录用户有DBA的角色则返回TRUE,否则返回FALSE"LANGUAGE" 返回当前登录用户使用的语言和字符集,返回格式为“语言.字符集”"TERMINAL" 返回当前登录用户的操作系统标识 "SESSIONID" 返回当前登录用户的会话标识 "ENTRYID" 返回当前登录用户的认证标识 "LANG" 返回当前用户使用的语言,它比"LANGUAGE"的返回值短 "INSTANCE" 返回当前实例的标识 

下面的SQL语句用来取得当前登录用户的语言信息和权限信息:


SELECT USERENV("ISDBA") AS ISDBA,USERENV("LANGUAGE") AS LANGUAGE,USERENV("LANG") AS LANG FROM DUAL 

执行完毕我们就能在输出结果中看到下面的执行结果:


ISDBA LANGUAGE LANGTRUE SIMPLIFIEDCHINESE_CHINA.AL32UTF8ZHS

转载于:https://www.cnblogs.com/yuyu666/p/9814079.html

各数据库系统独有函数相关推荐

  1. 程序员的mysql金典pdf_《程序员sql金典》pdf(完整)

    [实例简介] [实例截图] [核心代码] 第 1 章 数据库入门 1 1.1 数据库概述 1 1.1.1 数据库与数据库管理系统 1 1.1.2 数据库能做什么 2 1.1.3 主流数据库管理系统介绍 ...

  2. 读《程序员的SQL金典》[2]--函数

    一.数学函数 1.RAND SELECT RAND () ---0.302870228294199 取0-1之间的随机小数. 2.小数取整 CEILINT(data)舍掉小数部分并向上取整. FLOO ...

  3. mybatis 同名方法_判断同名股票是否存在的MyBatis查询函数写法

    在A股中,除非股票退市,六位的股票代号是永不变化的,而名称则可能变化,比如更换主业,更换金主,因经营不善而戴帽等,这时名称都会改变. 因此,从网页上爬取的实时股票信息,需要常常与存在本地数据库里的信息 ...

  4. Javascript - prototype、__proto__、constructor

    最近看了很多文章,想要更通透的搞懂JS中的prototype.__proto__与constructor属性,从各个博主的文章里摘取了我认为可以有助于理解的一些内容,希望自己能够掌握好这一重要知识点的 ...

  5. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-基于接口驱动的数据层...

    系列回顾 在前面的文章中,我用了大量的篇幅对UDA及ORM的使用进行了讲解和演示,我们已经知道并熟悉的使用UDA和ORM构建简单的应用,AgileEAS.NET在应用的纵向结构上建议使用分层结构,提出 ...

  6. php启动提示缺失v9,phpcms程序v9提示“您要查看的信息不存在”怎么解决

    易站通,带你玩转PHPCMS建站程序,让你更快的熟悉该程序下面让我们来学习吧 phpcms v9提示"您要查看的信息不存在"怎么解决 解决方法: 找到/phpcms/modules ...

  7. std::future和std::promise和std::packaged_task

    std::future 其实future有两个兄弟,一个是std::future, 一个是它大哥std::shared_future.他们的区别就是std::future只支持移动语义,它所引用的共享 ...

  8. Boost字符串处理

    (1):Boost学习之格式化输出--format: 原文链接:http://www.cnblogs.com/lzjsky/archive/2011/05/05/2037327.html 此文非常详细 ...

  9. 浅尝boost之format

    From: http://www.cnblogs.com/WuErPIng/archive/2005/04/21/142308.html 概述 std::string是个很不错的东东,但实际使用时基本 ...

最新文章

  1. mysql主从数据库含义_(转)Mysql数据库主从心得整理
  2. 如何看待程序媛们的职场焦虑和未来职业规划?
  3. 有趣的开源 AI 换脸工具:faceswap
  4. Oracle视图的作用与安全性
  5. 软件设计原则(二)单一职责原则 -Single Responsibility Principle
  6. Codeforces 815C. Karen and Supermarket【树形DP】
  7. 【深度学习系列】——深度学习简介
  8. 赚钱有捷径吗?为什么有的人赚钱很容易
  9. MySQL之四种SQL性能分析工具
  10. 国庆蓝牙耳机最强选购攻略,2020不容错过的精品蓝牙耳机
  11. vue js代码混淆加密、压缩
  12. 枚举算法,常用的三种
  13. Java转码amr_java实现amr转mp3
  14. 小卡机器人积木教程_这个会动的智能积木机器人分分钟让孩子爱不释手!秒杀家中99%的益智玩具!| 团...
  15. python爬虫中遇到“\xb5”、“xa0”等字符时报错编码错误的处理方式
  16. 计算机、通信方向学习考证经验分享
  17. (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest
  18. 计算机网络根据其规模大小和延伸范围,网络管理员考试计算机网络的分类
  19. 计算机电源负载能力差,电脑电源问题:电脑电源负载能力差的原因及解决方法...
  20. java基础:网络编程(一)简介

热门文章

  1. 川大计算机学硕奖学金,四川大学研究生奖助体系实施方案
  2. switch case 、循环结构
  3. sortedmap java_Java SortedMap comparator()用法及代码示例
  4. 计算机二级试题第四套答案,2014计算机二级VF试题及答案解析(第四套)
  5. 微信+上品折扣:微信商场O2O第一战打阿里大本营
  6. (iOS)苹果抓包配置教程 (一)
  7. 【Multisim】7位抢答器逻辑电路仿真
  8. 打开一个英文文本文件,将其中大写字母变成小写,小写字母变成大写。
  9. windows环境设置mysql数据库自动备份(测试成功)
  10. redis主从复制流程