【问题标题】:General: Doing a LEFT JOIN on a string in SQL常规:在 SQL 中对字符串执行 LEFT JOIN
【发布时间】:2021-03-26 03:10:05
【问题描述】:

我有 2 个表,都有一个患者标识符,它是一个字符串(数字和字母的组合)。 有没有办法加入病人标识符上的 2 个表?还是我需要有一个 int 患者标识符才能加入这两个表?

【问题讨论】:

  • 您使用的是什么 RDBMS?请提供一些示例数据/结构。我认为大多数 RDBMS 支持加入 string/char/varchar 列,所以你只需要FROM tbl1 JOIN tbl2 ON tbl1.patientId=tbl2.patientId
  • 您应该尝试在您的数据库上进行连接。这将很容易快速地知道它是否有效。如果您的 SQL 查询有问题,请编辑并将其放入您的问题中,以便我们提供帮助。

标签: sql string join left-join varchar


【解决方案1】:

您可以在任何支持 SQL 的数据库中加入 any 布尔表达式。表达式甚至不需要是相等的——尽管等值连接的性能往往比其他类型的连接好得多。

您绝对可以加入字符串,查询将相当有效。

出于实际原因,通常首选整数:

  • 它们往往更小(4 字节),因此在多个表中重复时效率更高。
  • 它们是固定长度的,这使得索引的效率略高(尽管患者 ID 也可能具有固定长度)。
  • 字符串可能存在大小写和排序规则问题。
  • 字符串可能存在隐私问题。

最后一个问题可能是您数据库中最重要的问题。您可能需要考虑是否需要一个隐藏实际患者编号的内部 ID。

但是,从 SQL 的角度来看,使用字符串作为主键、外键和连接是完全可以的。

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 2019-08-25
    • 2010-10-01
    • 1970-01-01
    • 2019-02-20
    • 2023-01-09
    • 2010-09-29
    相关资源
    最近更新 更多