mssql数据库截取字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mssql数据库截取字符相关的知识,希望对你有一定的参考价值。

数据库中内容表的字段是    shopContent 类型是 varchar(max) 我要在首页显示 300个字符, 300个字符以后就用  ...  代替   怎么截取???  我知道用 substr 可以,但不知道具体怎么做. 有sql语句的请发上来.谢谢..

mssql中截取字符串可以用left,right,substring函数。

left,是从字符左边开始截取,如:截取abcdefg字符串中的前三个字符:

select left(\'abcdefg\',3);

其中3为截取的长度。

rigth是从字符右边开始截取,如截取abcdefg字符串中的后三个字符:

select right(\'abcdefg\',3);

其中3为截取的长度。

substring,是从任意位置截取,如截取abcdefg字符串中的第二到第四个字符:

select substring(\'abcdefg\',2,3);

其中2为开始截取的位数,3为截取的长度。

参考技术A SUBSTRING ( expression , start , length )

select SUBSTRING (shopContent ,1,300) from XX

用 LEFT
返回从字符串左边开始指定个数的字符。
也行
select LEFT(shopContent ,300) from XX

sql语句循环截取字符串

测试环境 : mssql2016 express

需求 : 拆分字符串执行insert

思路 : 在循环中截取分隔符之间的字符串.起止点位置计算

     起点从0开始startIndex,查找第一个分隔符位置endIndex.下一次循环时,将endIndex+1作为起来,再查找其之后的第一个分隔符位置.直到查找到最后一个分隔符位置.

    当找到最后一个分隔符位置时,下一个止点位置为0循环会结束,而处理不到最后分隔符与字符串结尾处的那个子串,即最后一个单元.所以源字符串起点不含分隔符,但结束时包含.例如:

    A,Sql,C#,public,dynamic,  // 用逗号分隔的字符串,起点不含分隔符,但结束时用分隔符结束

 1 DECLARE @string as nvarchar(max) -- 源字符串,子串间用分隔符隔开
 2 DECLARE @spchar as char(1)         -- 分隔符
 3 DECLARE @startIndex as int         -- 起点
 4 DECLARE @endIndex as int         -- 结束点
 5 DECLARE @log as nvarchar(max)     -- 执行记录
 6 DECLARE @count as int             -- 查找次数
 7 
 8 SET @spchar=, -- 分隔符
 9 -- 源字符串,起点不包含分隔符,结束包含分隔符
10 SET @string=A,Sql,C#,public,dynamic, 
11 SET @startIndex=0 -- 0位置为初起点
12 SET @log=‘‘
13 SET @count=1
14 SELECT @endIndex=CHARINDEX(@spchar,@string);-- 第1个分隔符位置为结束点
15 -- charindex找不到字符串时,返回0.循环成立条件是能找到分隔符
16 WHILE @endIndex>0
17 BEGIN
18     DECLARE @subStr as nvarchar(20) -- 子字符串
19     -- 根据起止点及起止点之差为长度找出子字符串
20     SELECT @subStr=SUBSTRING(@string,@startIndex,@endIndex-@startIndex)
21     -- 下一起点为当前止点加1
22     SET @startIndex=@endIndex+1
23     -- 查找下一分隔符位置,即新的止点
24     SET @endIndex=CHARINDEX(@spchar,@string,@startIndex);
25  
26     SET @log=@log+N | 第+CAST(@count AS VARCHAR)+N次查找到: +@subStr
27     SET @count=@count+1
28 END
29 SELECT @log

执行结果 :  | 第1次查找到: A | 第2次查找到: Sql | 第3次查找到: C# | 第4次查找到: public | 第5次查找到: dynamic

以上是关于mssql数据库截取字符的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL 到 MySQL 迁移 - UCS-2 代理对的字符编码问题,如何从 MSSQL 数据库中删除这些?

MSSQL 带逗号的字符型字符串数值,如何转换成数值型

PDO + MySQL 总是返回字符串,但是 MsSQL 呢?

阿塞拜疆字符如何在 mssql 中插入?

无法将特定字符串写入 mssql 数据库

MSSQL字符串函数问题 解决好加分!!