【问题标题】:Search SQL Server string for values from another table在 SQL Server 字符串中搜索另一个表中的值
【发布时间】:2017-03-15 02:34:43
【问题描述】:

我有一个表,其列 name 在名称前后有随机字符,即:

表 A

  Name
  -----------------
  asd4345JONlkj345
  .;lidDavidlksd$

我在同一个数据库中有另一个表,其名称为:

表 B

 Name
 ------
 David
 Jon

这会持续 30k 行,否则我会很快硬编码一些东西。我想在表 A 的“名称”列中搜索表 B 中的每个值的每个字符串,如果找到,则在新列中返回名称。

我感觉这将是一个 UDF,这很好,我只是不确定如何在这种情况下使用 patindex,或者这是否是正确的方法。

【问题讨论】:

  • 我不明白在不到一分钟的时间内投了反对票,没有解释为什么?怎么会有时间在这么短的时间内理解问题?
  • 否决票不是来自我,但我敢肯定,因为目前还不清楚您要在这里做什么。我们可以大致了解,但代码不是这样工作的。我们需要实际的细节。
  • 这里是开始让您的问题变得更好的好地方。 spaghettidba.com/2015/04/24/…

标签: sql-server substring udf patindex


【解决方案1】:

您只需要LIKE 运算符即可:

select * 
from TableA
inner join TableB on TableA.Name like '%' + TableB.Name + '%'

【讨论】:

  • 不用like,根据描述=应该可以。
  • @urlreader 如何仅使用 = 将“00000David00000”与“David”匹配?
  • 我没有看到“名称前后的随机字符”,对此感到抱歉。
【解决方案2】:
  select B.Name, A.Name from tableA A inner join join tableB B
  on rtrim(ltrim(B.Name)) like '%' + rtrim(ltrim(A.Name)) + '%'

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2013-01-18
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多