如何在SQL表中解析以破折号分隔的值,并使用不同的解析出的值在其他表中进行查找?

假设我有users.nationality,这是一个类似“ 41-33-11”的varchar。我有键入这些ID的国家,城市和州表,分别为41(“ Buffalo”),33(“ NY”)和11(“ USA”)。

从用户中选择用户名,用户名,电子邮件,用户名

国籍=“ 41-33-11”

如何制作SELECT语句,以便获得“美国纽约州布法罗”?

最佳答案

使用内联视图拉出值,以便随后可以加入它们:

JOIN (SELECT SUBSTR(t.nationality, 0, 2) AS city_id,
             SUBSTR(t.nationality, INSTR(t.nationality, '-')+1, 2) AS state_id,
             RIGHT(t.nationality, 2) AS country_id
        FROM USERS t) u
JOIN COUNTRY cntry ON cntry.country_id = u.country_id
JOIN CITY cty ON cty.city_id = u.cty_id
JOIN STATE st ON st.state_id = u.state_id

关于sql - 在SQL表中解析以破折号分隔的值并进行查找,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1494535/

10-11 13:43