首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >TSQL帮助(SQL Server 2005)

TSQL帮助(SQL Server 2005)
EN

Stack Overflow用户
提问于 2010-05-06 17:37:55
回答 4查看 149关注 0票数 1

几天来,我一直在尝试使用一条相当复杂的SQL语句,并使其大部分正常工作。

我在最后一个部分遇到了问题,我想知道是否有人可以在这个问题上提供一些启发,因为我不知道为什么它不工作:

代码语言:javascript
代码运行次数:0
运行
复制
INSERT INTO ExistingClientsAccounts_IMPORT
SELECT DISTINCT 
cca.AccountID, cca.SKBranch, cca.SKAccount, cca.SKName, cca.SKBase, 
cca.SyncStatus, cca.SKCCY, cca.ClientType, cca.GFCID, cca.GFPID, cca.SyncInput, 
cca.SyncUpdate, cca.LastUpdatedBy, cca.Deleted, cca.Branch_Account, cca.AccountTypeID
FROM         ClientsAccounts AS cca 
INNER JOIN
(SELECT DISTINCT ClientAccount, SKAccount, SKDesc, 
    SKBase, SKBranch, ClientType, SKStatus, GFCID, 
    GFPID, Account_Open_Date, Account_Update
FROM          ClientsAccounts_IMPORT) AS ccai 
ON cca.Branch_Account = ccai.ClientAccount

表的定义如下:

代码语言:javascript
代码运行次数:0
运行
复制
CREATE TABLE [dbo].[ExistingClientsAccounts_IMPORT](
    [AccountID] [int] NOT NULL,
    [SKBranch] [varchar](2) NOT NULL,
    [SKAccount] [varchar](12) NOT NULL,
    [SKName] [varchar](255) NULL,
    [SKBase] [varchar](16) NULL,
    [SyncStatus] [varchar](50) NULL,
    [SKCCY] [varchar](5) NULL,
    [ClientType] [varchar](50) NULL,
    [GFCID] [varchar](10) NULL,
    [GFPID] [varchar](10) NULL,
    [SyncInput] [smalldatetime] NULL,
    [SyncUpdate] [smalldatetime] NULL,
    [LastUpdatedBy] [varchar](50) NOT NULL,
    [Deleted] [tinyint] NOT NULL,
    [Branch_Account] [varchar](16) NOT NULL,
    [AccountTypeID] [int] NOT NULL
) ON [PRIMARY]


CREATE TABLE [dbo].[ClientsAccounts_IMPORT](
    [NEWClientIndex] [bigint] NOT NULL,
    [ClientGroup] [varchar](255) NOT NULL,
    [ClientAccount] [varchar](255) NOT NULL,
    [SKAccount] [varchar](255) NOT NULL,
    [SKDesc] [varchar](255) NOT NULL,
    [SKBase] [varchar](10) NULL,
    [SKBranch] [varchar](2) NOT NULL,
    [ClientType] [varchar](255) NOT NULL,
    [SKStatus] [varchar](255) NOT NULL,
    [GFCID] [varchar](255) NULL,
    [GFPID] [varchar](255) NULL,
    [Account_Open_Date] [smalldatetime] NULL,
    [Account_Update] [smalldatetime] NULL,
    [SKType] [varchar](255) NOT NULL
) ON [PRIMARY]

我得到的错误消息是:消息8152,级别16,状态14,行1字符串或二进制数据将被截断。该语句已终止。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-06 17:42:32

错误是因为您试图将数据插入到ExistingClientsAccounts_IMPORT中的列中,该列的大小小于试图插入其中的数据的长度。

例如,SKAccount列在ExistingClientsAccounts_IMPORT表中是VARCHAR(12),但在ClientsAccounts_IMPORT中是VARCHAR(255)。

因此,如果ClientsAccounts_IMPORT包含任何字段长度超过12个字符的行,您将得到obv错误。例如,12个字符的字段无法容纳100个字符。

您需要确保要插入到的表中的所有列都足够大-确保每个列定义都与源表匹配。

票数 3
EN

Stack Overflow用户

发布于 2010-05-06 17:42:51

检查字段定义。你可以看到一些比原来的要小。现在对旧数据运行查询-您将发现使用了一些较大的字段,因此插入操作不可能不丢失数据。

示例: SKAccount -长度从255到12。

票数 0
EN

Stack Overflow用户

发布于 2010-05-06 17:43:26

SELECT列列表的第三列表示ExistingClientsAccounts_IMPORT.SKAccount是由ClientsAccounts.SKAccount填充的-但是,源最多为255个字符,而目标的容量为12个字符。如果有任何不适合的数据,您将收到此消息。

我还没有看过其他所有的专栏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2780026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档