SQL: 如何分隔以逗号分隔的字符串值?

SQL: How to separate string values separated by commas?

我正在尝试为我看过的所有电影创建一个关系数据库。

我使用 IMDb 对我看过的电影进行评分,并使用网站的导出功能将数据保存在我上传到 Microsoft Access 的 .csv 文件中。但是,"Genre" 列是多对多关系,我希望将其转换为一对多关系。

我想要一个名为 GENRE_ID 的 table 为每个流派分配一个数字 ID。然后我会有另一个 table,其中每个实例都有 movie ID ("const")、line item numberGENRE_ID.

所以它可能看起来像:

const       line_item      MOVIE_ID
tt0068646       1             1   (if MOVIE_ID: 1 = "crime")
tt0068646       2             2   (if MOVIE_ID: 2 = "drama")

这是我的数据库当前状态的图像 link。非常感谢你的帮助。这是我正在做的一个项目,目的是利用自己的时间了解更多信息。

关于解决方法的一些说明。

table 种类型

ID  Genre
1   Action
2   Adventure
3   Thriller
4   War

进口table

Const   GenreList
tt00    Action, Adventure, Thriller, War

一个查询

SELECT ti.Const, ti.GenreList, tg.Genre
FROM Imports as ti, Genres as tg
WHERE ti.GenreList Like "*" & tg.Genre & "*"

基本上,当您拥有一对多关系时,您应该为该关系使用 table 在你的情况下,我建议有 3 table:

  1. 电影 table : 包含类似于您目前的 table 的信息,流派除外
  2. 流派table:包含(至少)ID 和名称
  3. Film_Genre table : 包含 Film_Id, GenreId.

例如

在您的类型 table 中,您的数据将是

row 1: Id =1 , Name = "Crime"   
row 2: Id = 2, Name = drama,

等等

你的 Film_Genre table 会是这样的:

row1: Film_Id = tt0068646, GenreId = 1,
row2: Film_Id = tt0068646, GenreId = 2
row3: Film_Id = tt0082971, GenreId = 2

等等 (我假设你使用 "const" 列作为 Film table 的 Id,如果没有,你应该有自己的 Id)

当然,将您当前的数据库转换为此数据库需要您付出一点努力。