首页 > 解决方案 > 消息 245,级别 16,状态 1,第 58 行转换此 varchar 值时转换失败

问题描述

嘿伙计们,我正在尝试为我的运动员添加球队名称,但是由于某种原因,我不断收到一个转换错误,上面写着:错误图像

我有两个表,一个是团队表,另一个是运动员表,我已将外键添加到运动员表,但现在我试图让运动员插入显示团队名称,但它提供了错误。我将如何解决这个问题?我的 teamId 是一个 INT,我需要把它变成一个 Varchar 正确,因为我试图插入字符串而不是数字..

团队表和插入

运动员表和插入物

对于运动员插入,我添加了团队名称,这就是它给出错误的原因。请帮忙。谢谢

CREATE TABLE team(
    teamId INT IDENTITY(1, 1),
    teamName VARCHAR(50) NOT NULL,
    teamCity VARCHAR(20) NOT NULL,
    teamState CHAR(2),
    teamCountry VARCHAR(6),
    teamManager VARCHAR(50),
    teamLeague CHAR(2) NOT NULL,
    teamStadium VARCHAR(30),
    CONSTRAINT pk_team_teamId PRIMARY KEY (teamId)
);

    INSERT INTO team
VALUES
    ('Toronto Blue Jays', 'Toronto', 'ON', 'Canada', 'Charlie Montoyo', 'AL', 'Rogers Centre'),
    ('Chicago White Sox', 'Chicago', 'IL', 'USA', 'Rick Renteria', 'AL', 'Guaranteed Rate Field'),
    ('Tampa Bay Rays', 'Tampa Bay', 'FL', 'USA', 'Kevin Cash', 'AL', 'Tropicana Field'),
    ('Colorado Rockies', 'Denver', 'CO', 'USA', 'Bud Black', 'NL', 'Coors Field'),
    ('Los Angeles Angels', 'Anaheim', 'CA', 'USA', 'Joe Maddon', 'AL', 'Angel Stadium of Anaheim'),
    ('New York Yankees', 'New York', 'NY', 'USA', 'Aaron Boone', 'AL', 'Yankee Stadium'),
    ('Pittsburgh Pirates', 'Pittsburgh', 'PA', 'USA', 'Derek Shelton', 'NL', 'PNC Park'),
    ('Cincinnati Reds', 'Cincinnati', 'OH', 'USA', 'David Bell', 'NL', 'Great American Ball Park');
GO

    CREATE TABLE athlete(
    athleteId INT IDENTITY(1, 1),
    athleteFirstName VARCHAR(50) NOT NULL,
    athleteLastName VARCHAR(50) NOT NULL,
    athleteDateOfBirth DATE,
    athleteHeight SMALLINT,
    athleteWeight TINYINT,
    athletePosition CHAR(2) NOT NULL,
    athleteBattingAvg DECIMAL(4, 3) DEFAULT 0.000,
    athleteNationality VARCHAR(50) NOT NULL,
    teamId INT,
    CONSTRAINT pk_athlete_athleteId PRIMARY KEY (athleteId),
    CONSTRAINT fk_athlete_teamId FOREIGN KEY (teamId) REFERENCES team(teamId)
);
DROP TABLE athlete;

    INSERT INTO athlete (athleteFirstName, athleteLastName, athleteDateOfBirth, athleteHeight, athleteWeight, athletePosition, athleteBattingAvg, athleteNationality)
VALUES
    ('Vladimir', 'Guererro Jr.', '1999-03-16', 188, 113, '3B', 0.272, 'Canada', 'Toronto Blue Jays'),
    ('Bo', 'Bichette', '1998-03-05', 183, 83, 'SS', 0.311, 'USA', 'Toronto Blue Jays'),
    ('Cavan', 'Biggio', '1995-04-11', 188, 90, '2B', 0.234, 'USA', 'Toronto Blue Jays'),
    ('Travis', 'Shaw', '1990-04-16', 193, 104, '1B', 0.157, 'USA', 'Toronto Blue Jays'),
    ('Danny', 'Jansen', '1995-04-15', 188, 104, 'C', 0.207, 'USA', 'Toronto Blue Jays'),
    ('Randal', 'Grichuk', '1991-08-13', 188, 96, 'OF', 0.232, 'USA', 'Toronto Blue Jays'),
    ('Teoscar', 'Hernandez', '1992-10-15', 188, 92, 'OF', 0.230, 'Dominican Republic', 'Toronto Blue Jays'),
    ('Tim', 'Anderson', '1993-06-23', 185, 83, 'SS', 0.335, 'USA', 'Chicago White Sox'),
    ('Jose', 'Abreu', '1987-01-29', 190, 115, '1B', 0.284, 'Cuba', 'Chicago White Sox'),
    ('Kevin', 'Kiermaier', '1990-04-22', 185, 95, 'OF', 0.228, 'USA', 'Tampa Bay Rays'),
    ('Nolan', 'Arenado', '1991-04-16', 188, 97, '3B', 0.315, 'USA', 'Colorado Rockies'),
    ('Mike', 'Trout', '1991-08-07', 188, 106, 'OF', 0.291, 'USA', 'Los Angeles Angels'),
    ('Aaron', 'Judge', '1992-04-26', 201, 127, 'OF', 0.272, 'USA', 'New York Yankees'),
    ('Giancarlo', 'Stanton', '1989-11-08', 198, 111, 'OF', 0.288, 'USA', 'New York Yankees'),
    ('Joey', 'Votto', '1983-09-10', 188, 99, '1B', 0.261, 'Canada', 'Cincinnati Reds');

标签: sqlsql-server

解决方案


teamId INTalthlete表中声明。

但是,当您将数据加载到表中时,您正在加载一个 INT 列

'Toronto Blue Jays'

您应该使用上team一次表加载中生成的表中的 id 值加载该列


推荐阅读