现在是大写形式:
这个查询返回:
要把字符串设置成合适形式(字符串中每个单词的首字母大写),可以使用用户定义函数。在第11章中会演示CREATE FUNCTION的语法使用细节:
一旦创建了用户定义函数,就能在函数的参数中指定要修改为合适大
小写的字符串:
这个查询返回:
解析
第一个示例演示了LOWER函数,它返回字符表达式的小写形式。第二个示例演示了UPPER函数,它返回了字符表达式的大写形式。
没有内建的合适大小写函数,所以在这个技巧中创建了用户定义函数。 CREATE FUNCTION定义的第一行定义了期望的名字和参数——在这里是varchar(max)数据类型的参数:
RETURNS关键字定义了应用逻辑后由函数返回的数据类型:
接着,使用LOWER函数把传入函数的变量修改成小写形式:
新的整数局部变量@C设置成了字母‘a’的ASCII值:
使用一个WHILE循环来遍历字母表的每一个字母,搜索每一个前面有空格的字母,然后把它替换为字符的大写形式:
转换成大写形式是通过让小写字符的ASCII整数值减去32来实现的。例如,小写‘a’的ASCII是97,大写的A是65。
最终由函数返回合适大小写的字符串值@UnCased:
8.3.11 移除前导和尾部空格
LTRIM函数移除前导空格而RTRIM函数移除尾部空格。 第一个示例演示移除字符串的前导空格:
这个查询返回:
第二个示例演示移除字符串的尾部空格:
这个查询返回:
解析
LTRIM和RTRIM都接受一个参数——要移除前导或尾部空格的字符表达式。我们注意到,没有可以用于移除前导和尾部空格的TRIM函数(在其他编程语言中可以看到)。我们必须通过在一个表达式中使用LTRIM和RTRIM来实现。
8.3.12 重复一个表达式N次
REPLICATE函数将某个字符表达式重复指定的次数。 语法是:
第一个参数是要重复的字符表达式。第二个参数是字符表达式要重复的次数的整数值。
这个示例演示了如何使用REPLICATE函数来重复字符表达式几次:
这个查询返回:
解析
在这个技巧的示例中,字符表达式中的字母Z重复了30次。使用REPLICATE就可以不用手动编码这些字符来重复这些值。最大返回值是8 000字节。
8.3.13 重复一个空格N次
SPACE函数根据为输入参数指定的整数,返回重复空格的字符串。
本例演示了如何将空格重复指定次数:
这个查询返回:
解析
在这个技巧中,我们在两个字符串的中间连接了6个空格。最大返回值是8 000个字节。
8.3.14 逆序输出表达式
REVERSE函数接受一个字符表达式并以逆序的字符位置输出表达式。 本例演示了如何反转一个字符串表达式:
这个查询返回:
解析
这个技巧演示了使用REVERSE函数以逆序输出字符串的字符。
8.3.15 返回表达式的一块
SUBSTRING函数返回某个表达式定义的一块。 语法如下:
函数的第一个参数是你希望使用其来返回其中一块的字符表达式。第二个参数定义了块的起始位置,第三个参数是你希望提取的块的长度。
在本例中,假设你的应用程序接收到了一个客户的银行账号。按照公司的规定只能以隐藏形式保存银行账号,只保留中间的4位:
这个查询返回:
解析
在这个技巧中,我们使用SUBSTRING函数来获取长串银行账号的中间4位。SUBSTRING函数中的表达式就是银行账号,后面跟了起始位置和要提取的字符数。
8.4 处理NULL
由于NULL值是未知的,它可能会弄乱相关代码。SQL Server 2005提供了函数来处理代码中的NULL值,如表8-4描述的那样。
表8-4 NULL函数
函 数 名 ISNULL COALESCE NULLIF
描 述
ISNULL检测表达式是否为NULL,如果是的话替换NULL值
为另外一个值
COALESCE函数返回指定表达式列表的第一个非NULL值 当指定的两个表达式有相同值的时候NULLIF返回NULL值,否则返回第一个表达式的值
下面的几个技巧会演示这些函数。 8.4.1 替换NULL为替代值
ISNULL验证表达式是否为NULL,如果是的话,替换NULL值为一个替代值。 在本例中,任何NULL值都会被替换为另外的值:
这个查询返回下面的(部分)结果:
解析
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库SQL Server 2005范例代码查询辞典(4)在线全文阅读。
相关推荐: