Sql 使用子字符串检索外键值
下面是一个名为DrugEvents的表的输出表,其中Age列有Age值及其单位。下面给出了我用来获取下表的查询 单位值可在另一个名为AgeUnit的表中找到。此表有一个名为AGEUNID的主键和另一个名为AgeUnitNAme的列。我需要在名为Patient的表中插入值,检索年龄、性别、体重、国家和FKAgeUnitID。目前我有以下查询Sql 使用子字符串检索外键值,sql,sql-server,substring,inner-join,sql-server-2014,Sql,Sql Server,Substring,Inner Join,Sql Server 2014,下面是一个名为DrugEvents的表的输出表,其中Age列有Age值及其单位。下面给出了我用来获取下表的查询 单位值可在另一个名为AgeUnit的表中找到。此表有一个名为AGEUNID的主键和另一个名为AgeUnitNAme的列。我需要在名为Patient的表中插入值,检索年龄、性别、体重、国家和FKAgeUnitID。目前我有以下查询 SELECT SUBSTRING(d.Age, 1, CASE CHARINDEX(' ', d.Age) WHEN 0 THEN
SELECT SUBSTRING(d.Age, 1, CASE CHARINDEX(' ', d.Age)
WHEN 0
THEN LEN(d.Age)
ELSE CHARINDEX(' ', d.Age) - 1
END) AS Age,
Sex,
SUBSTRING(d.[Weight], 1, CASE CHARINDEX(' ', d.[Weight])
WHEN 0
THEN LEN(d.[Weight])
ELSE CHARINDEX(' ', d.[Weight]) - 1
END) AS [Weight],
Country,
d.Age
FROM DrugEvents d
在上面的查询中,我选择d.Age而不是FKAgeUnitID。如何选择与“年龄”列中的年龄单位值相匹配的FKAGEUNIID?也就是说,对于第一条记录,它应该在“61 YR”中找到“YR”,并获取其AGEUTID,然后在上面的查询中选择我当前有d Age的位置。请注意。您可以在JOIN子句的ON条件中使用子字符串()
SELECT au.AgeUnitID,
d.Age
--,other columns
FROM DrugEvents d
JOIN AgeUnit au
ON au.AgeUnit = SUBSTRING(d.Age, CHARINDEX(' ', d.Age), LEN(d.Age))
与选择列表中的方式相同。这是你想要的吗
这假设年龄和单位始终存在且以空格分隔,但如果情况并非如此,则同样可以使用与选择列表中已使用的逻辑相同的逻辑。可以在JOIN子句的ON条件中使用子字符串()
SELECT au.AgeUnitID,
d.Age
--,other columns
FROM DrugEvents d
JOIN AgeUnit au
ON au.AgeUnit = SUBSTRING(d.Age, CHARINDEX(' ', d.Age), LEN(d.Age))
与选择列表中的方式相同。这是你想要的吗
这假设年龄和单位始终存在且以空格分隔,但如果情况并非如此,则可以再次使用与选择列表中已使用的逻辑相同的逻辑。一个表中有2列
age
列,这是不可能的。该输出是我运行的选择查询。第二个年龄列应为FKAGEUNIID。它显示了年龄,因为我在上面的问题中给出了d.age。你的问题从字面上开始我有下表DrugEvents…
年龄列中的所有值都是'YR'。还有其他单位吗?是的,它们是YR、HR和MIN。一个表中有2个Age
列-这是不可能的。该输出是我运行的select查询。第二个年龄列应为FKAGEUNIID。它显示了年龄,因为我在上面的问题中给出了d.age。你的问题从字面上开始我有下表DrugEvents…
年龄列中的所有值都是'YR'。还有其他单位吗?是的,它们是YR、HR和MIN