xml地图|网站地图|网站标签 [设为首页] [加入收藏]
函数大全,将截断字符串或二进制数据终止
分类:数据库

System.data.sqlclient.sqlexception:将截断字符串或二进制数据终止。

1.CONCAT函数

CREATE  PROC [dbo].[sp_help_table]
    @tableName NVARCHAR(50)--表名称
AS
BEGIN
    SELECT a.colorder 字段序号,a.name 字段名,b.name 字段类型,b.length AS 字段长度,g.[value] AS 字段说明
    FROM syscolumns a left join systypes b
    on a.xtype=b.xusertype
    inner join sysobjects d
    on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
    left join sys.extended_properties g
    on a.id=g.major_id AND a.colid = g.minor_id
    WHERE d.[name] =@tableName 
    order by a.id,a.colorder
END    

错误原因:输入的字符串长度超过数据库设置的长度

SELECT custid, country, region, city,
  country + N',' + region + N',' + city AS location
FROM Sales.Customers;

这样,在查询某个表的时候,直接执行这个存过,参数就是表名称,最后的结果就是这样图片 1,字段说明是在新建表的时候填写的说明,如果没写这列就是NULL

对有NULL 数据行加减也为NULL

 

 图片 2

怎么解决呢 这里就用到了 CONCAT 函数

SELECT custid, country, region, city,
  country + COALESCE( N',' + region, N'') + N',' + city AS location
FROM Sales.Customers;

CONCAT('A',NULL,'B') 接收一个连接字符串输入并主动替换null 为‘’字符串 结果就是 AB

2.SUBSTRING函数

它可以从字符串提取一个子字符串

和c# 截取字符串用法一样 不过下标不是零开始

SELECT SUBSTRING('abcde', 1, 3); -- 'abc'

如果第三个参数超过字符长度也没事 它会默认去整个字符串长度

3.LEFT和RIGHT函数

其实SUBSTRING 函数简化版

SELECT RIGHT('abcde', 3); -- 'cde'

SELECT LEFT(N'abcde',3); -- 'abc'

4.LEN和DATALENGTH函数

SELECT LEN(N'abcde'); -- 5

SELECT DATALENGTH(N'abcde'); -- 10

LEN 返回字符数  DATALENGTH 返回字节数   LEN会删除尾随空格 但 DATALENGTH  不会

5.CHARINDEX 函数

SELECT CHARINDEX(' ','Itzik Ben-Gan'); -- 6

返回空格在 后面字符串第一次出现位置

本文由澳门新葡亰手机版发布于数据库,转载请注明出处:函数大全,将截断字符串或二进制数据终止

上一篇:没有了 下一篇:澳门新葡亰手机版SQL删除多列语句,和撤销授权
猜你喜欢
热门排行
精彩图文