8

我有一个包含大量记录的表(foo),我只想选择那些类似于另一个表(foo2)的字段中的记录之一

如果我使用内部连接执行 SELECT 查询

SELECT pst_qty AS [QTY]
  ,[MFGPN]
  ,[mfg_name] AS [MANUFACTURER]
  ,description
  ,sup_id
  FROM [foo]
  INNER JOIN [foo2]
  ON [foo].[MFGPN] = [foo2].TestString

afaik 我只会得到 foo.field1=foo2.field1 的记录。我似乎无法使用 ON foo.field1 LIKE foo2.field2 来选择像 foo2 中的字段这样的记录。我将如何选择与不同表中的列中的记录类似的记录?

4

3 回答 3

16

你有没有尝试过类似的东西

SELECT pst_qty AS [QTY] 
  ,[MFGPN] 
  ,[mfg_name] AS [MANUFACTURER] 
  ,description 
  ,sup_id 
  FROM [foo] 
  INNER JOIN [foo2] 
  ON [foo].[MFGPN] LIKE '%' + [foo2].TestString + '%'
于 2012-07-25T04:10:16.690 回答
3

怎么样,

SELECT DISTINCT
            F.[pst_qty] [QTY],
            F.[MFGPN], 
            F.[mfg_name] [MANUFACTURER], 
            F.[description], 
            F.[sup_id] 
    FROM
            [foo] F 
        CROSS JOIN
            [foo2] F2
    WHERE
             CHARINDEX(F2.[MFGPN], F.[TestString]) > 0;

请注意,如果字符串包含'%'通配符,这将起作用。

于 2018-02-14T14:17:27.383 回答
0
SELECT pst_qty AS [QTY]
.
.
.
  FROM [foo]
       where [foo].[MFGPN] LIKE '%123%'
             or [foo].[MFGPN] LIKE '%123%'
             or [foo].[MFGPN] LIKE '%123%'

将起作用,但需要进行全表扫描,因为该列上的任何索引都将被忽略。因此,可以尝试以下代替它。

SELECT pst_qty AS [QTY]
.
.
.
  FROM [foo]
  INNER JOIN [foo2]
        ON [foo].[MFGPN] LIKE '%' + [foo2].TestString + '%'
于 2012-07-25T06:39:42.133 回答