SqlServer 函数规整(Datalength与len,Patindex,stuff,replicate,left,right)

来源:互联网 发布:淘宝打折工具 编辑:程序博客网 时间:2024/06/05 05:27

            这次的程序涉及到获取数据库中最大单号,又是按类别划分的,需要对传入参数进行截取操作,搜索发现sqlserver 提供的函数好是强大,在写程序过程中用到以下几个DataLength 与len ,Patindex,stuff,replicate,left,right;

            以前经常只是用到len 这个函数,知道是获取字符串长度,偶然看到DataLength 也是获取字符串长度,好奇心驱使吧,就查了一下

           下面看一下官方解释:

                                                DataLength   返回用于表示任何表达式的字节数,Null 的  DataLength  的结果是NULL.

                                                           len        返回字符表达式中的字符数,如果字符串中包含前导空格和尾随空格,则函数会将它们包含在计数内。len 对相同的单字节和双字节字符串返回相同的值。如果传递给 LEN 函数的参数包含二进制大型对象块 (BLOB) 数据类型,如 DT_TEXT、DT_NTEXT 或 DT_IMAGE,则该函数将返回字节计数;

                                如果参数为空,LEN 将返回空结果。

           下面上自己测试的例子(ABC 后面均有三个空格用-表示)

数据类型

Nvarchar(10)

Varchar(10)

Char(10)

Text

Int

Decimal(18,0)

Nchar(10)

datetime

字段内容

ABC---  

A B C ---  

ABC---   

ABC---   

1230

1230

A BC---

2013-01-01 12:05:00.000

DataLength

20

8

10

7

4

5

20

8

len

3

5

3

不支持

4

4

4

18


Patindex      官方解释:

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

                                          其实说白了就是查找某字串第一次出现的位置,比较有内涵的是应用

                                           第一块:参数,就是通配符的使用问题(人工操作);

                                            第二块:返回所在位置(系统操作)

“_”号表示任意单个字符,该符号只能匹配一个字符"_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只能使用一个“_”表示

“%”符号是字符匹配符,能匹配0个或更多字符的任意长度的字符串

"[]"在模式查询中可以利用"[]"来实现查询,一定范围的数据。[]用于指定一定范围内的任何单个字符,包括两端数据;

"[^]"用来查询不属于指定范围([a-f])或集合(abcdef])的任何单个字符.

stuff              官方解释:函数将字符串插入另一个字符串,它在第一字符串中从开始位置删除指定长度的字符,然后将第二个字符串插入到第一个字符串的开始位置;

                     语法:STUFF ( character_expression 1,start , length ,character_expression 2)

                     其实顾名思义就是从character_expression 1中start 位置开始删除length 个字符,然后再start位置插入character_expression 2这个字符串;

                      应用  :select stuff("abcdefg",2,3,"xyz") from A  输出结果为: 'axyzefg' 记住索引位置是从1开始的

replicate      官方解释:以指定的次数重复字符串值;

                     语法:  REPLICATE ( string_expression ,integer_expression)

                      顾名思义就是把string-expression 这个字串重复integer_expression 次后呈现,若integer_expression 为负数,则返回Null 值

                       应用:select Replicate(‘A’,4) +'SS' from A 输出结果为:’AAAASS‘ 其实跟c#中PadLeft,PadRight 有点相似

left                 官方解释:返回字符串从左边开始指定个数的字符;

                       语法:left(character_expression,integer_expression)

                       顾名思义就是把character_expression字串从左侧开始截取integer_expression长度后返回;

                       应用:SELECT LEFT('abcdefg',2) 输出结果为:‘ab’;

right               与left 同理,不同点在于right 是从右边开始截取的!!


                     


                                      


                                      




原创粉丝点击