我有两个表:MyOrders 和 MyDrivers。
在 MyOrders 表中,我有一个名为 Details 的列(数据类型 TEXT - 我知道,但我没有构建数据库......)
在 MyOrders.Details 中,有时会有逗号分隔的数值列表,这些数值对应于表 MyDrivers 的 ID 值。
目标是使用这些列表将 MyOrders 加入 MyDrivers。
例如:
CREATE TABLE MyOrders
(
MyOrderID INT IDENTITY,
Details TEXT -- Wish it were NVarchar, but what can I do...
)
GO
CREATE TABLE MyDrivers
(
MyDriverID INT IDENTITY,
DriverName NVARCHAR(50)
)
GO
INSERT INTO MyOrders (Details) VALUES ('1,3,5,7,9')
INSERT INTO MyOrders (Details) VALUES ('2,4,6,8')
INSERT INTO MyOrders (Details) VALUES ('1,2,3,4')
INSERT INTO MyOrders (Details) VALUES ('4,5,6,7,8')
INSERT INTO MyOrders (Details) VALUES (NULL)
INSERT INTO MyOrders (Details) VALUES ('')
INSERT INTO MyOrders (Details) VALUES ('9')
INSERT INTO MyDrivers (DriverName) VALUES ('Alex')
INSERT INTO MyDrivers (DriverName) VALUES ('Bobby')
INSERT INTO MyDrivers (DriverName) VALUES ('Carl')
INSERT INTO MyDrivers (DriverName) VALUES ('Daryl')
INSERT INTO MyDrivers (DriverName) VALUES ('Ed')
INSERT INTO MyDrivers (DriverName) VALUES ('Frank')
INSERT INTO MyDrivers (DriverName) VALUES ('George')
INSERT INTO MyDrivers (DriverName) VALUES ('Hal')
INSERT INTO MyDrivers (DriverName) VALUES ('Ichabod')
INSERT INTO MyDrivers (DriverName) VALUES ('Justin Timberlake')
SELECT * FROM MyOrders O
INNER JOIN MyDrivers D
ON D.MyDriverID = ...? substring()? patindex()?
WHERE O.MyOrderID = 1
此处所需的结果是,对于 MyOrderID 1,我将收到 5 行结果:在同一订单的详细信息列表中分配给该订单的五个驱动程序中的每一个都有一个。如果没有列表 (NULL, '', ' ', ' ') 那么我不希望返回任何行。**有时用户会删除此字段中的值并留下空格,所以我假设我必须使用 TRIM。但他们总是添加必要的逗号,所以至少有那个......
我不知道该怎么做;我在 SQL 方面还有很多东西要学。任何有用的提示/想法将不胜感激。
非常感谢您!