SQL点滴30—SQL中常用的函数

简介: 该文章转载自http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html 别人的总结,很详细。 以下所有例子均Studnet表为例:  计算字符串长度len()用来计算字符串的长度 select sname ,le...

该文章转载自http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html

别人的总结,很详细。

以下所有例子均Studnet表为例:

 

计算字符串长度
len()用来计算字符串的长度

select sname ,len(sname) from student

字符串转换为大、小写
lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写

select lower( ' I AM A STUDENT ! ' )
select upper('i am a student !')

截去字符串左、右侧空格                                              
ltrim() 用来将一个字符串左侧的空格去掉 ,rtrim()用来将一个字符串右侧的空格去掉

declare @str varchar( 100 )
set @str = ' 我的左侧有空格! '
select @str
as 初始字符, len(@str) as 初始长度,ltrim(@str) as 现有字符,len(ltrim(@str)) as 现有长度

返回由重复的空格组成的字符串
space(
integer_expression)    integer_expression 指示空格个数的正整数。如果 integer_expression 为负,则返回空字符串。

select ' A ' + space( 2 ) + ' B '

取子字符串
substring(string,start_position,length) 可以从任意位置取任意长度的子字符串,
left(string,length)  从左侧开始取子字符串
right(string,length)从右侧开始取子字符串

select substring( ' HelloWorld! ' , 6 , 6 )
select left(
' HelloWorld! '  , 5)
select
right( ' HelloWorld! '  , 6)

字符串替换
replace(string,要被替换的字符串,替换的字符串)

select replace( ' HelloWorld! ' , ' o ' , ' e ' ) 结果为:HelleWerld!

返回字符串值的逆向值
reverse(string_expression)

select reverse( ' abc ' ) 结果为: cba

删除指定长度的字符,并在指定的起点处插入另一组字符
stuff(character_expression , start , length ,character_expression)
start 一个整数值,指定删除和插入的开始位置。
length 一个整数,指定要删除的字符数。

select stuff( ' abcdefg ' , 1 , 6 , ' Hello ' ) 结果为:Hello g

以指定的次数重复字符串值
replicate(
string_expression ,integer_expression)

select replicate( ' abc ' , 4 ) 结果为: abcabcabcabc

返回字符串中指定表达式的开始位置
charindex(expression1 ,expression2  , start_location )或charindex(expression1 ,expression2 )
expression1在expression2 中的开始位置

select charindex( ' H ' , ' elloHWorld ' ) 结果为:5

返回指定表达式中模式第一次出现的开始位置
patindex('%pattern%',expression)
返回指定表达式中某模式第一次出现的起始位置;
如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。

select patindex( ' %Hello% ' , ' WorldHello ' ) 结果为:6

返回输入表达式的第一个字符的整数值
unicode( 'ncharacter_expression' )    ' ncharacter_expression ' 为 nchar nvarchar 表达式。

select unicode( ' a ' ) 结果为:97
select unicode(
' abc ' ) 结果为:97

返回由数字数据转换来的字符数据
str(
float_expression , length ,decimal )
float_expression 带小数点的近似数字 (float) 数据类型的表达式。
length               总长度。它包括小数点、符号、数字以及空格。默认值为 10。
decimal             小数点右边的小数位数。decimal 必须小于等于 16。如果 decimal 大于 16,则将结果截断为小数点右边的 16 位。

复制代码
select str( 123.436 , 2 ), len(str( 123.436 , 2 )) // 当表达式超出指定长度时,字符串为指定长度返回 **

select str(
123.436 ), len(str( 123.436 )),
str(
123.436 , 6 ), len(str( 123.436 , 6 )),
str(
123.436 , 6 , 1 ), len(str( 123.436 , 6 , 1 )) // 由六个数字和一个小数点组成的表达式转换为有六个位置的字符串。
数字的小数部分舍入为一个小数位。

select str(
1234.436 ), len(str( 1234.436 )),
str(
1234.436 , 6 ), len(str( 1234.436 , 6 )),
str(
1234.436 , 6 , 1 ),len(str( 1234.436 , 6 , 1 ))
复制代码

结果为:

         

         

得到字符的ASCII码
ascii()用来得到一个字符的ASCII码,它有且只有一个参数,如果参数为字符串,那么取第一个字符的ASCII码

select ascii( ' H ' )
select ascii(
' HelloWorld! ' )

得到一个与ASCII码数字对应的字符
Char(integer_expression)  integer_expression 介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。

select Char( 72 )

返回返回具有指定的整数代码的 Unicode 字符
nchar(integer_expression)  integer_expression 介于 0 与 65535 之间的正整数。如果指定了超出此范围的值,将返回 NULL。

select nchar( 1000 )

返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 SQL Server 分隔标识符。
quotename('character_string'character_string 不得超过 128 个字符。超过 128 个字符的输入将返回 NULL。

select quotename( ' abc[aa]def ' )

结果为:[abc[]]def]  请注意,字符串 abc[]def 中的右方括号有两个,用于指示转义符。
select QUOTENAME('abcdef','''') --分隔符是两个单引号
-- 'abcdef'
select QUOTENAME('abcdef') --分隔符是]
-- [abcdef]
select QUOTENAME('abcdef','{}') --分隔符是}
-- {abcdef}

发音匹配度
有时候我们并不知道一个人姓名的拼写,但是我们知道他的发音,这时我们可以进行发音的匹配度测试。
soundex()用于计算一个字符串的发音特征性,这个特征值为一个四个字符的字符串,特征性的第一个字符总是初始字符串中的第一个字符,而后是一个三位数的数值。

select sname ,soundex(sname) from student

结果为:

发音特征值的含义非常复杂,如果要根据两个发音特征值来分析两个字符串的发音相似度的话非常麻烦。
可以使用difference()来简化两个字符串的发音相似度比较,它可以计算两个字符串的发音特征值,并且比较它们,
然后返回一个0~4之间的值来反映两个字符串的发音相似度,这个值越大则表示两个字符串的发音相似度越大。

select sname,soundex(sname), difference(sname, ' Herry ' ) from stu

结果为:
  

 

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

目录
相关文章
|
2月前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
2月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
2月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
|
2月前
|
SQL 关系型数据库 MySQL
SQL日期函数
SQL日期函数
|
3月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
4月前
|
SQL 数据处理 数据库
|
4月前
|
SQL Oracle 关系型数据库
SQL 中的大小写处理函数详解
【8月更文挑战第31天】
176 0
|
4月前
|
SQL 数据采集 数据挖掘
为什么要使用 SQL 函数?详尽分析
【8月更文挑战第31天】
59 0
|
4月前
|
SQL 存储 关系型数据库
COALESCE 函数:SQL中的空值处理利器
【8月更文挑战第31天】
634 0
|
4月前
|
SQL 关系型数据库 数据处理