【问题标题】:Join table using the numeric value of an alphanumeric string使用字母数字字符串的数值连接表
【发布时间】:2021-08-04 21:12:44
【问题描述】:

我必须加入表 a 和表 b

加入专栏:

table a has a column named: usr_sq_num which is a bigint
table b has a column named: created_by which is varchar(100)

usr_sq_num 仅包含 8574、6732、8957 等数字 created_by 包含以下值:USER8574、USER6732、USER8957

这是我可以将表 a 与表连接在一起的唯一列。

如何获取字符串的数字部分,例如“USER8574”并连接到一个值,例如 8574?

感谢您的帮助。

【问题讨论】:

  • 这显然是一个数据模型问题,所以你(或某人)应该修复它。在两个表中将其设为整数或设为“USERnnnn”。
  • 请注意,这是一个糟糕的性能和数据完整性设计。

标签: sql sql-server tsql inner-join


【解决方案1】:

如果前缀相同,可以使用:

on concat('USER', t1.usr_sq_num) = t2.created_by

或者,如果前缀未知,您可以使用like

on t2.created_by like concat('%[^0-9]', t1.usr_sq_num)

【讨论】:

  • concat('USER', t1.usr_sq_num) = t2.created_by 上的这部分给了我部分 USER,当我输入 SELECT 时。我不应该得到数字部分吗?谢谢。
  • @erasmocarlos 。 . .我不明白你的评论。这是 JOINon 子句,这就是您要询问的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2016-04-21
  • 1970-01-01
  • 2012-10-27
相关资源
最近更新 更多