sql - 消息 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');
解决方案
你teamId INT
在althlete
表中声明。
但是,当您将数据加载到表中时,您正在加载一个 INT 列
'Toronto Blue Jays'
您应该使用上team
一次表加载中生成的表中的 id 值加载该列
推荐阅读
- flutter - Flutter中的Single-Child Layout Widget和Multi-Child Layout Widget有什么区别?
- regex - 正则表达式匹配后肺泡辅音
- mobile - 使用 FileToMemoryTable 显示的分页表
- kubernetes - Kubernetes中的CoreDNS。转发时如何附加域名?
- java - java.lang.IllegalStateException:您必须设置文本或视图
- reactjs - 以动态antd形式添加默认值
- html - iOS:删除 UIPageControl 中的填充
- apache - 使用 htacces 修改查询字符串值
- docker - 无法在 docker 中 ssh localhost
- distributed-system - raft 节点如何了解对等点?