加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer 函数规整(Datalength与len,Patindex,stuff,replicat

发布时间:2020-12-12 16:06:54 所属栏目:MsSql教程 来源:网络整理
导读:? ? ? ? ? ? 这次的程序涉及到获取数据库中最大单号,又是按类别划分的,需要对传入参数进行截取操作,搜索发现sqlserver 提供的函数好是强大,在写程序过程中用到以下几个DataLength 与len,Patindex,stuff,replicate,left,right; ? ? ? ? ? ? 以前经常只是

数据类型

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 是从右边开始截取的!!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

? ? ? ? ? ? 这次的程序涉及到获取数据库中最大单号,又是按类别划分的,需要对传入参数进行截取操作,搜索发现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 后面均有三个空格用-表示)

    推荐文章
      热点阅读