今天一上班老大要求我改善我们网站系统的注册机制。之前我们是严格区分大小写的,所以会出现同一个登陆名的各种写法,比如说admin,Admin,aDmin,ADMIN等等。今天他要求我用户可以注册他想要的大小写字母,不过一旦某个用户名被注册了,它的其他形式一律被算为存在的。
因为我之前接触数据库不多,所以想了半天没想出什好方法,最后愚蠢的决定先把全部用户的用户名查询出来赋给一个数组,再把数组值一个字母一个字母的对比。不过很快放弃了这个世纪笑话,开始摸索。就这样在微软MSDN上我看到了CAST的用法。 用CAST来取数据库中的某字段lowercase值,这方法又简单又方便,恨自己没好好学。用法很简单对于我的例子具体用法如下:
在第5行取用Ajax传来用户要注册的username值,再用第6行的函数转换成小写字母的值。
最后在SQL语句中使用CAST来去数据表中的值与之前的值对比就可以了,如果存在一样字母顺序组成的用户名就返回true,若不存在则反之。
再举几个例子
1, 每个示例都检索列表价格的第一位是 3 的产品的名称,并将 ListPrice 转换为 int 。
以下示例将本年度截止到现在的全部销售额 (SalesYTD ) 除以佣金百分比 (CommissionPCT ),从而得出单列计算结果 (Computed )。在舍入到最接近的整数后,将此结果转换为 int 数据类型。
下面是结果集:
以下示例使用 CAST 连接非字符型非二进制表达式。
下面是结果集:
以下示例将 money 列 SalesYTD 转换为 int 列,然后再转换为 char(20) 列,以便可以将其用于 LIKE 子句。
下面是结果集: