SQL点滴33—SQL中的字符串操作

原文:SQL点滴33—SQL中的字符串操作

计算字符串长度
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

时间: 2024-11-05 11:23:41

SQL点滴33—SQL中的字符串操作的相关文章

SQL点滴18—SqlServer中的merge操作,相当地风骚

原文:SQL点滴18-SqlServer中的merge操作,相当地风骚 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的.本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语

SQL点滴32—Excel中CONCATENATE函数生成SQL语句

原文:SQL点滴32-Excel中CONCATENATE函数生成SQL语句 当拿到一个Excel的时候需要将这里面的数据插入到数据库里面,该怎么办,除了使用SSIS数据导入之外还可以使用Excel中的CONCATENATE函数,这个有点技巧,第一次使用的时候可能会让你有点困惑.如果我们理解这个函数的定义就不难了. 定义 CONCATENATE 函数可将最多 255 个文本字符串合并为一个文本字符串.联接项可以是文本.数字.单元格引用或这些项的组合.例如,如果您的工作表的单元格 A1 中包含某个人

SQL点滴19—T-SQL中的透视和逆透视

原文:SQL点滴19-T-SQL中的透视和逆透视 透视 今天抽一点时间来看看透视和逆透视语句,简单的说就是行列转换.假设一个销售表中存放着产品号,产品折扣,产品价格三个列,每一种产品号可能有多种折扣,每一种折扣只对应一个产品价格.下面贴出建表语句和插入数据语句. 1 create table SalesOrderDetail( 2 ProductID int /*unique多谢wuu00的提醒*/, 3 UnitPriceDiscount float, 4 ProductPrice float

sql点滴42—mysql中的数据结构

MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补. 表列出了各种数值类型以及它们的允许范围和占用的内存空间. 类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0,65 535)

sql点滴37—mysql中的错误Data too long for column '' at row 1

原文:sql点滴37-mysql中的错误Data too long for column '' at row 1   1.MYSQL服务 我的电脑——(右键)管理——服务与应用程序——服务——MYSQL——开启(停止.重启动) 2.命令行方式 Windows 1.点击“开始”->“运行”(快捷键Win+R). 2.启动:输入 net stop mysql 3.停止:输入 net start mysql 提示* Redhat Linux 也支持service command,启动:# servic

SQL点滴31—SQL语句中@@IDENTITY和@@ROWCOUNT区别

原文:SQL点滴31-SQL语句中@@IDENTITY和@@ROWCOUNT区别 SQL语句中@@IDENTITY和@@ROWCOUNT区别 在一条 INSERT.SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值. 如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL. 如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值. 如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操

SQL点滴23—T-SQL中的除法

原文:SQL点滴23-T-SQL中的除法 在T-SQL中没有除法运算,但是在T-SQL中可以实现类似除法的操作Divide.一般除法操作的结果一个列来自于被除关系表,剩下的来自除关系表.这里举一个例子来说明.假设如下有三个表:客户Customers,销售人员Employees,订单Orders,查询返回一些客户,要求这些客户和所有美国雇员都至少有一次交易记录.来看下面一个语句: select custid from Sales.Customers as Cwhere not exists(sel

SQL点滴35—SQL语句中的exists

原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定

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

原文:SQL点滴30-SQL中常用的函数 该文章转载自http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html 别人的总结,很详细. 以下所有例子均Studnet表为例:  计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 select lowe